공부하자/알면 유용한정보

컴파일러 정리

YoBot 2017. 5. 17. 20:49

컴파일러 간단 정리


1. 컴파일러와 인간이 의사 전달을 하기 위해서는 BASIC, FORTRAN, COBOL, PASCAL, C,C++, JAVA, Delphi 와 같은 고급언어가 필요하고, 이러한 고급언어로 작성된 프로그램을 컴퓨터가 인식할 수 있도록 저급언어로 번역해 주기 위해 번역기가 필요하게 된다. 

번역기에는 어셈블리(assembler), 컴파일러(compiler), 인터프리터(interpreter), 프리프로세서(preprocessor) 등이 있는데 이들 중 가장 대표적인 번역기가 컴파일러이다.



2. 번역기들 중에서 고급언어로 작성된 프로그램을 입력 자료로 하여 번역하는 가장 대표적인 번역기는 컴파일러와 인터프리터이다.

컴파일러는 일반적으로, 어휘분석(lexical analysis) 단계, 구문분석(syntax analysis) 단계, 의미분석(semantic analysis) 단계, 중간코드 생성(intermediate code generation) 단계, 코드최적화(code optimization) 단계, 목적코드 생성(code generation) 단계를 거쳐 저급언어로 번역되며, 인터프리터는 컴파일러와는 달리 원시 프로그램을 입력 프로그램의 논리적인 순서에 따라 문장단위로 번역한 후, 곧바로 실행한다. 이러한 차이로 인해 번역기들은 각각의 특성을 갖게 된다.


3. 어휘분석 단계에서 원시 프로그램을 읽어 들여 토큰단위로 분리하여 출력하며, 구문분석단계에서 이 토큰들이 주어진 문법에 맞는지를 검사하고, 구문분석 단계의 결과인 구문트리에 대하여 어떠한 의미와 기능을 하는 것인지를 분석하고, 이러한 기능이 올바르게 수행될 수 있도록 환경을 조성하는 일을 하는 것이 의미 분석이다.


4. 의미분석 단계까지의 내용으로 코드를 생성해도 되지만 좀더 효율적으로 만들어 실행시 기억공간이나 실행시간을 절약하는 것이 필요한데 이를 수행하는 것이 코드최적화이고 코드최적화가 되기 위해서 먼저 중간코드가 생성되어야 한다. 마지막 단계인 목적코드 생성 단계에서는 최적화된 코드를 그대로 레지스터나 기억장소 위치를 정해서 목적코드로 생성해준다.


5. 컴파일러는 위에서 말한 6단계의 논리적인 구조를 가지고 있다. 논리적인 구조를 실제 구현하게 되는 경우 1-패스 컴파일러(one-pass compiler) 또는 2-패스 컴파일러(two-pass compiler) 방법을 이용한다. 1-패스 컴파일러는 초창기에 컴파일러를 만들 때 사용했던 방법으로 컴파일러의 전 과정을 하나의 패스로 구현하는 방법이고, 2-패스 컴파일러는 컴파일러의 구성을 중간코드를 기점으로 하여 앞 단계를 전반부, 뒷 단계를 후반부로 구성하는 방법이다.


6. 컴파일러를 구현하는 것은 일반 소프트웨어의 구현과 비슷하지만, 설계상의 문제, 컴퓨터의 소프트웨어 시스템, 사용자의 요구사항 및 개발에 참여하는 인적 자원 등을 고려하여 구현해야 한다.





'공부하자 > 알면 유용한정보' 카테고리의 다른 글

서버 환경 확인 방법  (0) 2017.05.19
웹 크롤링(Web Scraping) 이란?  (0) 2017.05.19
곰플레이어 건너뛰기 설정  (0) 2017.05.17
NFC란  (0) 2017.05.12
은행 식별 코드  (0) 2017.05.02