뚜sh뚜sh

소스 코드가 명령어가 되기까지 본문

컴퓨터 공학(컴퓨터 구조 + 운영체제)

소스 코드가 명령어가 되기까지

뚜sh뚜sh 2023. 4. 26. 22:11

C언어 컴파일 과정

  • 전처리기(preprocessor) -> 컴파일러(compiler) -> 어셈블러(assembler) -> 링커(linker)

 

 

전처리 과정 (preprocessing) 

  • 본격적으로 컴파일하기 전에 처리할 작업들
  • 외부에 선언된 다양한 소스 코드, 라이브러리 포함(e.g. #include)
  • 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define)
  • 컴파일할 영역 명시(e.g. #if, #ifdef, ...)
  • 소스 파일이 test.c 였다면 결과 파일은 test.i 형태가 됨

 

컴파일 과정(compiling)

  • 전처리가 완료되어도 여전히 소스 코드
  • 전처리 완료된 소스 코드를 저급 언어(어셈블리 언어)로 변환
  • 결과 파일은 test.s 형태임

 

어셈블 과정(assembling)

  • 어셈블리어를 기계어로 변환
  • 목적 코드(object file)를 포함하는 목적 파일이 됨
  • 결과 파일은 test.o 형태임

 

링킹(linking)

  • 결과 파일은 test.exe 형태임

 

목적 파일 vs 실행 파일

  • 목적 파일과 실행 파일은 둘 다 기계어로 이루어진 파일
  • But, 목적 파일과 실행 파일은 다름
  • 목적 파일은 링킹(linking)을 거친 이후에야 실행 파일이 됨

'컴퓨터 공학(컴퓨터 구조 + 운영체제)' 카테고리의 다른 글

레지스터  (0) 2023.04.27
ALU와 제어장치  (0) 2023.04.27
명령어의 구조  (0) 2023.04.26
소스 코드와 명령어  (0) 2023.04.26
0과 1로 문자를 표현하는 방법  (0) 2023.04.25
Comments