책너두 (컴퓨터 밑바닥의 비밀) 2일차 컴파일러

요약

  • 프로그래밍 언어로 작성된 “소스 파일”을 컴파일러에게 먹여주면 컴파일러는 이것을 꼭꼭 씹고 뜯고 맛본 후, 실행 파일 형태로 뱉어냄.

    • 실행 파일이 바로 CPU가 직접 실행할 수 있는 기계 명령어 임.
    • 즉, 컴파일러는 “번역기” 이자 “텍스트 처리 프로그램” 이라고 생각할 수 있음.
  • 컴파일러는 소스 파일의 각 항목을 잘게 쪼개어 토큰화 함.

    • 소스 코드에서 토큰을 추출하는 과정을 어휘 분석(lexical analysis) 라고 함.
  • 토큰을 가지고 그 의도를 표현해야만 함.

    • 특정 토큰 키워드에 따라 컴파일러는 문법 오류를 보고할 수 있음.
    • 이 과정을 해석(parsing) 이라고 함.
    • 컴파일러는 해석을 통한 구조를 트리로 표현함.
  • 구문 트리에서 이상이 있는지 확인함.

    • 이 단계를 통과하면 컴파일 오류가 없다는 것이 증명됨.
    • 이 과정을 의미 분석(semantic analysis) 라고 함.
  • 의미 분석 후, 컴파일러는 구문 트리를 더 다듬어진 형태인 중간 코드(Intermediate Representation Code) 를 생성함.

    • 중간 코드가 만들어지면서 추가적인 최적화 되기도 함.
  • 이제 컴파일러는 중간 코드를 어셈블리어 코드로 변환함.

  • 여기 까지 “컴파일 과정”을 살펴보았는데, 이게 끝이 아님.

    • 모든 소스 파일에는 각각의 대상 파일이 있는데, 이 대상 파일을 실행 파일로 합쳐주는 작업이 있어야 함.
    • 이걸 해주는걸 링크(Link)라고 하며, 링크를 담당하는 프로그램을 링커(linker)라고 함.

댓글

Designed by JB FACTORY