1. 전처리


2. 어휘 분석

 : 전처리 된 파일을 읽어 소스를 문법적으로 의미 있는 가장 최소 단위(토큰)로 나눈다.


3. 구문 분석

 : 파서에 의해 구문 분석이 이루어짐. 구문 분석은 어휘 분석 단계에서 스캐너가 토큰을 인식하고 파서에서 넘겨주면 파서가 문법적 오류가 있는지 검사한 후에 중간 언어 생성을 위한 파서 트리를 만든다.


4. 의미 분석

 : 문법상 오류는 없지만 의미상 오류가 있는 것을 검사한다.
 ex) 선언되지 않은 변수의 사용 / 함수의 인자 개수나 인자형의 불일치 / 자료형의 불일치 등


5. 중간 언어 생성

 : 작성된 언어에 독립적인 중간 언어 생성

 ex) gcc의 경우 RTL(Register Transfer Language)이라는 중간언어를 생성함


6. 최적화

 : 중간 코드 최적화

 : 목적 코드 최적화


7. 목적 코드 생성

 : 중간 언어를 바탕으로 목적 코드를 생성한다. 목적 코드는 어셈블리 언어로 작성되며 이후 어셈블러에 의해서 인스트럭션으로 변환 된다. 목적 코드를 생성할 때는 되도록 재배치가 가능한 코드를 생성하게 한다.


8. 어셈블리

 : 어셈블리 언어로 작성된 목적 코드를 기계어 코드로 변환한다.


8. 링킹



+ Recent posts