이론

컴파일링의 각 과정과 결과물

월러비 2024. 3. 23. 10:20

Compile

  • 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스다.
    • 즉, 인간이 이해할 수 있는 언어로 작성된 소스 코드를 CPU가 이해할 수 있는 언어로 번역하는 작업이다.

컴파일 과정

  • 컴파일 과정은 전처리(Pre-Processing) → 컴파일(Compilation) → 어셈블리(Assembly) → 링킹(Linking)으로 나누어진다.

전처리(Pre-Processing)

  • 전처리기(Preprocessor)를 통해 소스 코드 파일(.c)을 전처리된 소스 코드 파일(.i)로 변환하는 과정이다.
  1. 주석 제거 : 소스 코드에서 주석을 제거한다.
    1. 주석은 사람들이 알아볼 수 있게 남긴 내용으로 컴퓨터가 알 필요는 없다.
  2. 헤더 파일 삽입 : #include 지시문을 만나면 해당하는 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입한다.
    1. 즉, 헤더 파일은 컴파일에 사용되지 않고 소스 코드 파일 내에 전부 복사된다.
    2. 헤더 파일에 선언된 함수 원형은 후에 링킹 과정을 통해 실제로 함수가 정의되어 있는 오브젝트 파일(컴파일된 소스 코드 파일)과 결합한다.
  3. 매크로 치환 및 적용 : #define 지시문에 정의된 매크로를 저장하고 같은 문자열을 만나면 #define 된 내용으로 바꿔준다.

컴파일(Compilation)

  • 컴파일(Compilation) 과정은 컴파일러를 통해 전처리된 소스 코드 파일(.i)을 어셈블리어 파일(.s)로 변환하는 과정이다.
  • 이때, 작성한 언어의 문법검사가 실행된다.

어셈블리(Assembly)

  • 어셈블리(Assembly) 과정은 어셈블러(Assembler)를 통해 어셈블리어 파일(.s)을 오브젝트 파일(.o)로 변환하는 과정이다.
    • 오브젝트 파일 : 사람이 알아볼 수 없는 기계어로 변환된 코드로 구성된 파일

링킹(Linking)

  • 링킹(Linking) 과정은 링커를 통해 오브젝트 파일(*.o)들을 묶어 실행 파일(.exe)로 만드는 과정이다.

'이론' 카테고리의 다른 글

Queue  (0) 2024.03.26
컴파일러와 인터프리터 차이  (0) 2024.03.24
데드락 예방조건 4가지  (0) 2024.03.20
데드락(deadlock) 발생조건 4가지  (0) 2024.03.19
Animation Tweening  (0) 2024.03.18