실행 파일의 생성단계
전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일
>>어셈블리어코드 생성
>>바이너리코드 생성
>>라이브러리 묶음
1.전처리기에 의한 치환작업
'#'으로 시작하는 지시자의 지시에 따라서 소스코드를 적절히 변경하는 작업을 한다.
2.컴파일러에 의한 번역
컴파일러는 c코드를 컴퓨터가 알아들을 수 있는 기계어인 어셈블리어로 변환시켜준다.
3.어셈블러에 의한 바이너리 코드 생성
어셈블리어는 컴퓨터에 의해 실행되기에 앞서 컴퓨터가 이해할 수 있는 바이너리 코드로 번역되어야 한다.
어셈블러는 어셈블리어로 이루어져 있는 명령어를 0 1로 이루어져 있는 바이너리 코드로 변형시켜 주는 일을한다.
4.링커에 의한 연결과 결합
프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는(혹은 연결시켜 주는)작업을 한다.
링커에 의해 생성된 실행 파일은 바이너리 코드로 되어 있는 명령어가 들어있다.
명령어들은 CPU에 의해서 순차적으로 실행된다. 메모리상에서 실행되는 것이 아니라 CPU 내부로 하나씩 이동한 다음 실행하게 된다.
Fetch -> Decode -> Execution
1.Fetch : 메모리상에 존재하는 명령어를 CPU로 가져오는 작업이다.
2.Decode : 가져다 놓은 명령어를 CPU가 해석하는 단계이다.
3.Execution : 해석된 명령어의 명령대로 CPU가 실행하는 단계이다.
'programing > Common' 카테고리의 다른 글
Git 정리 (0) | 2016.08.08 |
---|---|
Git 개념 가이드 (0) | 2016.08.05 |
바인딩과 스코프 (0) | 2016.08.02 |
DLL에서 STL 사용시 문제 (0) | 2015.05.14 |
C++ Optimization Strategies and Techniques (0) | 2015.05.08 |