Transcript 형식 언어
Compiler
“A compiler is a computer program which translates programs written in
a particular high-level programming language into executable code for
a specific target computer.”
Source
Programs
Compiler
Object
Programs
(Assembly Language,
Machine Language)
ex) C compiler on SPARC
C program을 입력으로 받아 SPARC에서 수행 가능한 코드를
출력한다.
Compiler Structure
Source
Programs
Front-End
IC
Back-End
Front-End : language dependent part
Back-End : machine dependent part
Object
Programs
Cross-Compiler
“A cross-compiler is a program which is to run on machine A
and produce target code for another machine B.”
Compiler
on A machine
Source
Programs
Target Code
for machine B
Execution : down-loading or interpretation
Bootstrapping
Interpreter
“An interpreter transforms a program directly into a sequence
of machine actions and produces the results of the program.”
data
Interpreter
Source
Programs
C: \. . .
Result
Compiler : Operational System
Interpreter : Developing System or Educational System
Preprocessor
for the language extension
Source
Programs
Preprocessor
Macro substitution
Conditional compilation
Inclusion of files
Extended
Source
Programs
Translator
Target
Programs
Source
Programs
Lexical Analyzer
Token
Syntax Analyzer
Tree
Intermediate Code
Generator
Intermediate
Code
Code Optimizer
Optimized
Code
Target Code
Generator
Object
Programs
1. Lexical Analyzer(Scanner)
컴파일러 내부에서 효율적이며 다루기 쉬운 정수로 바꾸어 줌.
A sequence
of tokens
Lexical Analyzer
Source
Programs
ex) if ( a > 10 ) ...
Token
: if
Token Number : 32
(
a
>
10
7
4
25
5
) ...
8
2. Syntax Analyzer(Parser)
기능: Syntax checking, Tree generation.
Tree
A sequence
of tokens
Syntax Analyzer
Error message
or syntactic
structure
출력: incorrect - error message 출력
correct - program structure (=> tree 형태) 출력
ex) if (a > 10) a = 1;
if
>
a
=
10 a
1
3. Intermediate Code Generator
Semantic checking
Intermediate Code Generation
ex) if (a > 10) a = 1.0; ☞ a가 정수일 때 semantic error !
ex) a = b + 1;
Tree :
=
a
+
b
Ucode:
1
lod 1 2
ldc 1
add
str 1 1
- variable reference: (base, offset)
4. Code Optimizer
Optional phase
비효율적인 code를 구분해 내서 더 효율적인 code로 바꾸어 준다.
Meaning of optimization
ex)
major part : improve running time
minor part : reduce code size
LDC R1, 1
LDC R1, 1
(x)
Criteria for optimization
preserve the program meanings
speed up on average
be worth the effort
5. Target Code Generator
중간 코드로부터 machine instruction을 생성한다.
Intermediate
Code
Target
Code Generator
Code generator tasks
1. instruction selection & generation
2. register management
3. storage allocation
4. code optimization (Machine-dependent optimization)
Target
Code