1) 전처리기(preprocessor)
- ( test.c → test.i ) 전처리(preprocess)과정을 실행
- 전처리 과정 (preprocessing)
- 본격적으로 컴파일하기 전에 처리할 작업들
- 외부에 선언된 다양한 소스코드, 라이브러리 포함(e.g. #include)
- 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define)
- 컴파일할 영역 명시(e.g. #if, #ifdef, ···)
2) 컴파일러(compiler)
- ( test.i → test.s ) 컴파일(compile)과정을 실행
- 컴파일 과정(compiling)
- 전처리가 완료 되어도 여전히 소스코드이다.
- 전처리 완료된 소스코드를 저급 언어(어셈블리 언어)로 변환
3) 어셈블러(asembler)
- ( test.s → test.o ) 어셈블(assemble)과정을 실행
- 어셈블 과정(assembling)
- 어셈블리어를 기계어로 변환
- 목적 코드(object file)를 포함하는 목적 파일이 됨
더보기
목적 파일 vs 실행 파일
- 목적 파일과 실행 파일은 둘 다 기계어로 이루어진 파일이다.
- 목적 파일은 링킹(linking)을 거친 이후에야 실행 파일이 된다.
- 링킹이란 각기 다른 목적 코드를 하나의 실행 파일로서 묶어주는 작업 즉 연결 시켜주는 작업이다.
4) 링커(linker)
- ( test.o → test.exe ) 링킹(linking)과정을 실행
- 링킹이란 각기 다른 목적 코드를 하나의 실행 파일로서 묶어주는 작업 즉 연결 시켜주는 작업이다.
- ex) test.o 라는 목적 파일에 test1.o 라는 목적 파일에 있는 코드가 필요하다면 두가지를 연결시켜주어야 실행시킬수 있는 실행파일이 되기 때문에 이를 위한 과정이 링킹이다.
출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터 (1) | 2023.10.29 |
---|---|
[CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치 (0) | 2023.10.28 |
[CS : 컴퓨터 구조] 03-2 명령어의 구조 (1) | 2023.10.24 |
[CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어 (0) | 2023.10.23 |
[CS : 컴퓨터 구조] 데이터 : 02-2 0과 1로 문자를 표현하는 방법 (0) | 2023.10.20 |