컴파일고급언어로 쓰인 프로그램기계어 번역하는 것.

 

고급언어:우리가 보고 이해하기 쉬운 "높은 레벨"의 언어

 

기계어 : 컴퓨터가 이해할 수 있는 저급 언어. 즉, "낮은 레벨"의 언어

 


 

컴파일 과정

 


 

1. 전처리기 (Preprocessor)

- 전처리 (Preprocess) 과정이다. pre + process로 간단하게 '사전 처리'라고 보면 된다.

- 전처리기에 의해 소스코드에 포함된 매크로나 지시자(#include, #define, #ifdef 등)를 컴파일러가 이해할 수 있도록 코드를 변환시켜 준다.

- '소스코드의 중심(main)이 실행되기 전에 사전준비 하는 과정'

 

2. 컴파일러 (Compiler)

- 각 운영체제에서 사용할 수 있는 컴파일러로 전처리가 완료된 C++코드를 컴파일한다.

- 컴파일러를 통해 바로 기계어로 번역되는 것이 아닌 중간언어 또는 저수준언어라고 하는 단계로 번역된다. 보통은 어셈블리어로 번역된다.

 

3. 어셈블러 (Assembler)

- 어셈블리어를 기계어로 번역해 주는 프로그램

- 번역된 파일 : Object File(객체 파일, 목적 파일)

- 어셈블러까지 컴파일 과정이라고 한다.(어셈블러도 기계어로 번역해주는 단계이기에)

 

4. 링커 (linker)

- 컴파일(컴파일러, 어셈블러) 과정을 통해 각 파일들을 하나로 연결해 준다.

- Object File들과 필요한 라이브러리들을 연결시켜주고, 최종적으로 하나의 'executable file (실행 가능한 파일)'로 만든다

- 우리가 흔히 보는 .exe라는 확장자를 갖은 파일을 실행시킨다.

 


간단하게 으로 예시를 들어보면

 

1. 전처리기

 - 저자 이름, 책에서 정의하는 표현, 판권, 인용 등 이미 정해져 있는 것들을 먼저 처리하여 이후에 일일이 다시 찾아 쓸 필요 없이 정리해 두는 과정

 

2. 컴파일러

 - 한글(고급 언어)을 영어(기계어)단순 번역해 주는 과정

 

3. 어셈블러

 - 단순하게 단어만 번역된 영어(기계어)를 말이 되게끔 각 파트별(어셈블러)로 묶어주는 과정

 

4. 링커

 - 여러 파트로 나눠 저 있는 부분들을 하나의 책(실행 파일)으로 엮어내는 과정

 

 

전처리-컴파일-어셈블-링크를 살펴보았다.

좀 더 포괄적으로 보면

'전처리-컴파일-어셈블'단계를 하나의 컴파일 단계라고 보고,

컴파일 단계에 링크 과정이 포함되어야 비로소 실행가능한 파일이 나오는 전체 과정을 의미한다.

 

'컴파일 + 링크 = 빌드'라고 이해하면 된다.

 

 

'C++' 카테고리의 다른 글

Call by value, Call by reference, 참조자  (0) 2023.03.16
아스키코드  (0) 2023.03.11
C++ 바이트 패딩(Byte Padding)  (0) 2023.03.11
C 자료형 변환  (0) 2023.03.03
C++ 연산자 우선 순위  (0) 2023.03.02

+ Recent posts