Upload
mr-ahmed-elmasry
View
24
Download
4
Embed Size (px)
Citation preview
Understanding Compiler.
Structure of a Compiler
Compiler Stages
Source Language
?
Target Language
Source Language
Target Language
Front End
Back End
Intermediate Code
Structure of a Compiler
Compiler Stages
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
FrontEnd
Back End
Int. Code Generator
Intermediate Code
Structure of a Compiler
Compiler Stages
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
FrontEnd
Code Optimizer
Target Code Generator
BackEnd
Int. Code Generator
Intermediate Code
Structure of a Compiler
Compiler Stages
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Source Code:cur_time = start_time + cycles * 60
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Source Code:cur_time = start_time + cycles * 60
Lexical Analysis:ID(1) ASSIGN ID(2) ADD ID(3) MULT INT(60)
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Source Code:cur_time = start_time + cycles * 60
Lexical Analysis:ID(1) ASSIGN ID(2) ADD ID(3) MULT INT(60)
Syntax Analysis: ASSIGN
ID(1) ADD
ID(2) MULT
ID(3) INT(60)
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Syntax Analysis: ASSIGN
ID(1) ADD
ID(2) MULT
ID(3) INT(60)Sematic Analysis: ASSIGN
ID(1) ADD
ID(2) MULT
ID(3) int2real
INT(60)
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Sematic Analysis: ASSIGN
ID(1) ADD
ID(2) MULT
ID(3) int2real
INT(60)
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Optimized Code (step 0):temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Optimized Code (step 1):temp1 = 60.0temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Optimized Code (step 2):
temp2 = id3 * 60.0temp3 = id2 + temp2id1 = temp3
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Optimized Code (step 3):
temp2 = id3 * 60.0id1 = id2 + temp2
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Optimized Code:
temp1 = id3 * 60.0id1 = id2 + temp1
Example Compilation
Source Language
Target Language
Semantic Analyzer
Syntax Analyzer
Lexical Analyzer
Code Optimizer
Target Code Generator
Int. Code Generator
Intermediate Code
Intermediate Code:temp1 = int2real(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3
Optimized Code:
temp1 = id3 * 60.0id1 = id2 + temp1
Target Code:MOVF id3, R2MULF #60.0, R2MOVF id2, R1ADDF R2, R1MOVF R1, id1
Example Compilation