■ 전처리 과정이 끝났으면 이제 진짜 C 컴파일러인 cc1의 차례이다. cc1의 컴파일 과정은 크게 세 부분으로 나뉠수 있는데,
    전단부와 중단부, 후단부가 바로 그것이다.


(1) 전단부(front-end)
: 전단부에서 하는 일은 언어 종속적인 부분을 처리하는 일이다.

- 소스 코드가 올바르게 작성되었는지 분석
- 중단부에 넘겨주기위한 GIMPLE 트리를 생성
※ GIMPLE 트리 : 소스 코드를 트리 형태로 표현한 자료 구조


(2) 중단부(middle-end)
: 아키텍쳐 비종속적인 최적화 수행

- 전단부에서 넘겨받은 GIMPLE 트리를 이용해아키텍처 비종속적인 최적화를 수행
- 최종적으로 후단부에서 사용하는 RTL(Register Transfer Language)를 생성
- cc1에서 수행하는 최적화 중 많은 최적화가 중단부에서 이루어 진다.
※ RTL : 고급 언어와 어셈블리 언어의 중간 형태


(3) 후단부(back-end)
: 아키텍쳐 종속적인 최적화 및 목적 코드 생성

- 아키텍처 비종속적인 최적화와 함께 아키텍처 종속적인 최적화를 수행
- 최적화 후 목적 코드 생성(어셈블리 코드)
- 후단부에서 수행하는 최적화의 종류도 중단부 못지 않게 많다.
- 인스트럭션 스케줄링이나 레지스터 할당 등

by 민트앤라떼 2011. 10. 20. 17:16