1.1 KiB
1.1 KiB
컴파일러 1
Interpreter in Modern Processors
Compiler
- Front-End
보이는 부분(HW에 신경을 안써도 됨)
- Back-End
HW에 밀접한 최적화를 해줌
General Structure of a Modern Compiler
- Front-End
- Lexial Analysis
- Syntax Analysis
- Semantic Analysis
- Code Generation - 1
- Back-End
- Control/DataFlow Analysis
- Optimization
- Code Generation - 2
이런 모듈식 구조는 다양한 언어와 하드웨어에 쉽게 적용할 수 있도록 도운다.
Lexical Analysis (Scanner)
프로그램을 token의 의미 단위로 나눔.
그리고 의미가 없는 단위를 지움.
보통 FSA로 구현함.
Syntax Analysis (Parser)
미리 있는 Grammar를 바탕으로 Syntax Correctness를 진행함.
Semantic Analysis
- identifier 정의 등
- 타입 체크
- 스코프 체크
- 오버로딩 모호화 해소
- IR로 변환
Optimization
최적화함
- 상수 최적화
- 안쓰는 변수
- loop에서 안바뀌는 변수
- 다시 똑같이 계산하는 변수 제거
- ...