Transcript 1. 컴파일러 개론
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System 1-3. 컴파일러 논리적구조 (phase) 1-4. Compiler Organization 1 1-1. Compiler 정의 A Compiler is a program that reads a program written in one language – source program – and translates it into an equivalent program in another language – target(object) program Source program Target program compiler error 2 1-2. Language processing system Skeletal source program(high) preprocessor highlevel language compiler Front-end 분석 형식이론 (확립) IL lowlevel, assembly language assembler Back-end 합성 경험적 이론 Relocatable machine code loader Absolute machine code (executable machine code) 3 1-3. 컴파일러 논리적 구조 (phase) 전 반 부 Lexical analysis (어휘분석) Syntax analysis (구문분석) Symbol table Semantic analysis (의미분석) Error handle Intermediate code generation (중간코드생성) Code optimization (코드 최적화) Code generation (코드 생성) 후 반 부 4 • Lexical analysis (어휘분석) – source program을 읽어서 문법의 최소 단위인 token을 생성하는 일 – A := B + 3 ; (token의 개수 : 6개) • A, B (variable), := (assignment symbol), +(plus operator), 3(numeric), ;(delimeter) 특수형태 : keyword, operator, delimeter Token 일반형태 : identifier, 상수 5 • Syntax analysis (구문분석) – token을 읽어 오류를 검색하고 올바른 문장 에 대한 구문구조를 만든다. A := B + 3 ; Top-down 방식 := A + B 3 6 • Semantic analysis (의미분석) – type checking(형 검사) – 각 연산자가 원시 언어의 정의에 맞는 피연산자를 가지는가를 검사 • Intermediate code generation (중간코드생성) – 구문구조를 이용하여 코드 생성 또는 문법규칙에 의해 생성 – 예) A := B + 3; load 1 2 U code loc 3 add str 1 1 7 • Code optimazation (코드 최적화) – 선택적 단계 (공간적, 시간적 효율화를 위해 필수적) • Code generation (코드 생성) – 목적코드 생성 – assemble language, machine code Cross compiler – 다른 machine에서 실행하기 위한 object program 생성 8 position := initial + rate * 60 Intermediate code generator Lexical analyzer Symbol Table id1 := id2 + id3 * 60 Syntax analyzer := id1 id2 * id3 60 Semantic analyzer := + id2 * id3 1 position 2 initial 3 rate 4 ... … ... Code optimizer + id1 temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 inttoreal temp1 := id3 * 60.0 id1 := id2 + temp1 Code generator MOVF id3, R2 MOVF #60.0, R2 MOVF id2, R2 ADDF R2, R1 MOVF R1, id1 60 Translation of a statement 9 1-4. Compiler Organization Compiler organization Logical organization (phase) Physical organization (pass) Single Pass 속도 증가 메모리 많이 사용 Multi pass 속도 저하 메모리 적게 사용 10