컴파일의 4단계
1.구문해석
소스코드 해석 -> 파즈(Parse) 또는 구문 해석(Syntax analyzing)
소스코드 해석기 -> 파서(parser) 또는 구문 해석기(syntax analyzer)
컴퓨터가 이해하기 쉬운 형식 -> 구문 트리(syntax tree)
ex. x=1, y=2, 3*(x+y)
2. 의미해석
- 로컬 변수 / 글로벌 변수 구별
- 변수 선언 및 참조 구별
- 변수, 식 타입 확인 (형 변환)
- 변수 초기화 확인
- 리턴값 유효성 확인
3. 중간표현 생성
- 여러 종류의 언어나 CPU에 대응하는 컴파일러의 경우 중간표현을 가진다.
- 리눅스 GCC -> RTL(Register Transfer Language)
- 소스코드 해석에서 중간표현까지의 과정을 컴파일러의 프런트-엔드(front-end)라고 한다.
4. 코드생성
- 중간표현을 어셈블리 언어로 변환
- 코드 생성(Code generation) , 코드 생성 프로그램 모듈은 코드 제네레이터(Code generator)
- 프로그램의 의미를 바꾸지 않고 변환 ( C or Java => Assemble Language)
최적화
- 코드를 최적화(optimization) 단계가 포함되어 있다.
- 추상 구문 트리 최적화, 중간 코드 최적화, 기계어 변환 최적화, 라이브러리 코드 최적화.
'잡동사니 > 컴파일러' 카테고리의 다른 글
[컴파일러 구조와 원리] - TOKEN (0) | 2015.12.31 |
---|---|
[컴파일러 구조와 원리] - 어휘 해석 (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 파서 제네레이터 (Parser Generator) (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 구문 해석( lexical analyze ) (0) | 2015.12.31 |
[컴파일러 구조와 원리] - 컴파일의 과정 (0) | 2015.12.31 |