16
Understanding Compiler.

Understanding Compilers

Embed Size (px)

Citation preview

Page 1: Understanding Compilers

Understanding Compiler.

Page 2: Understanding Compilers

Structure of a Compiler

Compiler Stages

Source Language

?

Target Language

Page 3: Understanding Compilers

Source Language

Target Language

Front End

Back End

Intermediate Code

Structure of a Compiler

Compiler Stages

Page 4: Understanding Compilers

Source Language

Target Language

Semantic Analyzer

Syntax Analyzer

Lexical Analyzer

FrontEnd

Back End

Int. Code Generator

Intermediate Code

Structure of a Compiler

Compiler Stages

Page 5: Understanding Compilers

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

Page 6: Understanding Compilers

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

Page 7: Understanding Compilers

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

Page 8: Understanding Compilers

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

Page 9: Understanding Compilers

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

Page 10: Understanding Compilers

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

Page 11: Understanding Compilers

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

Page 12: Understanding Compilers

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

Page 13: Understanding Compilers

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

Page 14: Understanding Compilers

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

Page 15: Understanding Compilers

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

Page 16: Understanding Compilers

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