한빛미디어 컴퓨터구조 3

C언어의 컴파일

전처리기 (Preprocessor)본격적으로 컴파일하기 전에 처리할 작업들외부에 선언된 다양한 소스 코드, 라이브러리 포함 (#include) 라이브러리 소스들을 진짜로 가져오는 과정이라고 생각하면 된다.프로그래밍의 편의를 위해 작성된 매크로 변환 (#define)컴파일할 영역 명시 (#if, #ifdef)확장자 변환: test.c → test.igcc hongong.c // gcc컴파일러 이용, ./a.out 이라는 실행파일이 생성된다.컴파일 과정 (Compiling)전처리가 완료되어도 여전히 소스 코드전처리가 완료된 소스 코드를 저급 언어(어셈블리 언어)로 변환gcc -S hongong.i -o hongong.s  어셈블 과정 (Assembling)어셈블리어를 기계어(컴퓨터가 알아들을 수 있는 0과..

명령어의 구조와 주소 지정 방식

명령어의 구조연산 코드: 수행할 연산CPU마다 가지는 연산 코드의 종류, 개수가 다르다.데이터 전송 ex) MOVE, STORE 등.. (데이터를 옮겨라. 메모리에 저장해라)산술/논리 연산제어 흐름 변경입출력 제어오퍼랜드: 연산에 사용될 데이터 또는 연산에 사용될 데이터가 저장된 위치연산에 사용될 데이터가 저장된 위치를 ‘주소 필드’라고 부른다. 오퍼랜드를 주소 필드라고도 부른다. 명령어 주소 지정 방식유효 주소 (Effective address)연산에 사용할 데이터가 저장된 위치명령어 주소 지정 방식 (Addressing modes)연산에 사용할 데이터가 저장된 위치를 찾는 방법유효 주소를 찾는 방법다양한 명령어 주소 지정 방식들

소스코드와 명령어

우리가 이용하는 C++, C 이런 것들은 고급 언어이다. 이를 컴퓨터가 이해하기 위해선 변환 과정이 필요하고 이를 통해 저급 언어로 변환된다.고급 언어: 개발자가 이해하기 쉽게 만든 언어저급 언어: 컴퓨터가 이해하고 실행하는 언어. 기계어와 어셈블리어가 있다.기계어: 이진수 0과 1로 이루어진 명령어, 간혹 16진수로도 표현된다.어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어. 소스 코드에 직접적으로 이용하기도 한다.   고급 언어가 저급 언어로 변환되는 방식에는 크게 2가지가 있다. 컴파일러에 의해 컴파일이 이루어지고 저급 언어로 변환된다.  인터프리터 언어인터프리터에 의해 한 줄씩 실행된다.소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요가 없다.  내가 사용하는 C..