Compiler, Compile   컴파일러, 컴파일

(2023-11-14)

1. 컴파일러

  ㅇ 고급 프로그래밍 언어로 쓰인 원시 프로그램을,
     - 당초 의미와 동등한, 컴퓨터로 실행 가능한 파일로 변환시키는,
     - 번역 프로그램

  ㅇ 즉,
     - 고급 프로그래밍 언어로 작성한, 원시 코드 (Source Code)를,
     - 컴퓨터 내부에서 사용 가능한 언어인, 기계어 (Machine Language)로 번역하고,
     - 이를 실행가능(Excecutable)하게 만들어주는 프로그램


2. 전체 컴파일 과정

  ㅇ 컴파일 실행 단계 구분 (넓은 의미의 컴파일 : 때론, 전체 과정을 빌드build이라고도 함)
     - 선행처리 (Preprocessing)
        . 컴파일 전에 원시 프로그램을 처리하는 컴파일러의 한부분
     - 컴파일 (Compile)
        . 좁은 의미의 컴파일
     - 결합 (Assemble)                                    ☞ 어셈블러 참조
        . 소스 코드의 컴파일 후 기계어 변환
        . 때론, 어셈블러 단계를 거치지 않고, 컴파일러에서 바로 기계어로 변환되기도 함
        . 어셈블러의 출력은 오브젝트 파일(object file)이라고 함
     * 컴파일러에 의해 생성된 기계어 만으로, 직접 실행될 수도 있지만,
        . 통상, 다른 코드들과 함께 엮어지어(링킹,로딩되어) 실행됨
     - 링킹(Linking) & 로딩(Loading)  :  실행 파일의 생성   ☞ 링커,로더 참조
        . 주 기억장치의 할당 (확보)
        . 연결 (Linking)
        . 재배치 (Relocation)
        . 프로그램 연결 적재 (Loading)

  ㅇ 컴파일 논리적 단계 구분 (좁은 의미의 컴파일)
     - 어휘 분석  :  토큰 분리 등
        . 토큰이라는 의미있는 문법 단위 (어휘 단위 : 식별자,특수어,연산자 등)로 분리하는 것
     - 구문 분석  :  구조화된 구문 트리 생성 등
        . 어휘 단위들을 가져와서, 이들로부터 파스 트리라는 계층적 구조를 생성 
     - 의미 분석  :  타입 검사 (Type Checking)등
        . 구문 분석 시 탐지가 어려운 타입 오류 등을 검사함
     - 중간 코드 생성  :  원시 프로그램기계어 간의 중간 수준의 코드
        . 중간 코드 (Intermediate Code)  :  중간 수준의 코드로써, 다른 언어에서 공유 가능
           .. 例) PascalP 코드, Java바이트 코드 등
     - 코드 최적화  :  프로그램 크기를 축소하거나, 실행 속도를 높이는 등
        . 기계어 상에서 수행하기 어려워, 중간 코드를 대상으로 이루어짐
     - 목적 코드 생성  :  중간 코드 버전을 동등기계어로 변환시킴
        . 목적 코드 (Object Code)  :  기계어로 번역된 파일

컴파일러
   1. 컴파일   2. 전처리   3. 어휘 분석, 구문 분석, 의미 분석   4. 링커 및 로더   5. 형식 언어   6. 유한상태 머신   7. BNF,EBNF  
번역/번역기
   1. 번역   2. 어셈블러   3. 인터프리터   4. 컴파일러  


Copyrightⓒ written by 차재복 (Cha Jae Bok)       기술용어해설 소액 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"