글
■ 전처리 과정이 끝났으면 이제 진짜 C 컴파일러인 cc1의 차례이다. cc1의 컴파일 과정은 크게 세 부분으로 나뉠수 있는데,
전단부와 중단부, 후단부가 바로 그것이다.
(1) 전단부(front-end)
: 전단부에서 하는 일은 언어 종속적인 부분을 처리하는 일이다.
- 소스 코드가 올바르게 작성되었는지 분석
- 중단부에 넘겨주기위한 GIMPLE 트리를 생성
※ GIMPLE 트리 : 소스 코드를 트리 형태로 표현한 자료 구조
(2) 중단부(middle-end)
: 아키텍쳐 비종속적인 최적화 수행
- 전단부에서 넘겨받은 GIMPLE 트리를 이용해아키텍처 비종속적인 최적화를 수행
- 최종적으로 후단부에서 사용하는 RTL(Register Transfer Language)를 생성
- cc1에서 수행하는 최적화 중 많은 최적화가 중단부에서 이루어 진다.
※ RTL : 고급 언어와 어셈블리 언어의 중간 형태
(3) 후단부(back-end)
: 아키텍쳐 종속적인 최적화 및 목적 코드 생성
- 아키텍처 비종속적인 최적화와 함께 아키텍처 종속적인 최적화를 수행
- 최적화 후 목적 코드 생성(어셈블리 코드)
- 후단부에서 수행하는 최적화의 종류도 중단부 못지 않게 많다.
- 인스트럭션 스케줄링이나 레지스터 할당 등
'L inux > Compile' 카테고리의 다른 글
컴파일(Compile)과정 - collect2에 의한 링킹 과정 (0) | 2012.03.22 |
---|---|
컴파일(Compile)과정 - as에 의한 기계어 코드 생성 (0) | 2012.01.10 |
컴파일(Compile)과정 - cc1 -E에 의한 전처리 과정 (0) | 2011.10.14 |
컴파일(Compile)과정 (0) | 2011.10.14 |
컴파일 (Compile) (0) | 2011.10.14 |
RECENT COMMENT