컴파일러
컴파일러란?
컴파일이란 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는 과정을 의미한다. 이러한 컴파일링을 자동으로 수행해주는 소프트웨어 혹은 장치를 컴파일러라고 한다.
컴파일링 과정은 4단계로 이루어진다.
1. 전처리 과정 (Pre-processor)
2. 컴파일 과정
3. 어셈블리 과정
4. 링킹 과정
전처리
전처리 과정이란 우리가 만든 코드들 중 헤더파일이나 매크로와 같은 부분들을 소스코드로 변환해주는 사전 작업이다.
이 과정에서 쓸모없는 부분들을 제거하여 최적화 또한 수행한다.
주석을 제거하고, 헤더파일 내부의 코드를 삽입하고, 상단의 매크로를 실제 코드로 치환하고 적용해주는 과정을 수행한다.
컴파일
그 다음 컴파일 과정에서 고급 언어 (대표적으로, C++)를 저급 언어(어셈블리어)로 변환해준다. 여기서 고급, 저급이란 말은 얼마나 자연어와 가까운가를 의미할 뿐, 저능하다는 의미가 아니라는 것에 유의하자.
그 외에도 언어의 문법 검사, 정적 영역들의 메모리 할당을 수행한다.
1 + 2// 자연어의 경우
MOV num1 1
MOV num2 2
ADD NUM1, NUM2 // 어셈블리어의 경우
어셈블리
그 다음 어셈블리 과정에서는 어셈블러를 통해 어셈블리어로 번역된 코드를 기계어로 변환해주는 과정을 수행한다.
어셈블러는 컴파일러에서 처리된 어셈블리어를 기계어로 바꿔주는 컴파일러이다.
링킹
마지막으로 링킹 과정에서는 여러 오브젝트 파일들을 묶어서 하나의 실행파일을 생성하게 된다. 이 과정에서 오브젝트 파일과 프로그램에서 사용하는 라이브러리 파일들을 링크하여 실행파일을 만드는데, 라이브러리를 링크하는 방법에 따라 정적 링킹, 동적 링킹으로 나눌 수 있다.
'Programming > 기타' 카테고리의 다른 글
리팩토링 (0) | 2024.11.30 |
---|---|
코드스멜 (0) | 2024.11.30 |
게임수학) 행렬 - 1 (0) | 2024.11.22 |
게임수학) 벡터 - 2 (0) | 2024.11.21 |
게임수학) 벡터 - 1 (0) | 2024.11.20 |