SlideShare a Scribd company logo
1 of 42
Chapter 6 
Intermediate Code Generation
Outline 
Variants of Syntax Trees 
Three-address code 
Types and declarations 
Translation of expressions 
Type checking 
Control flow 
Backpatching
Introduction 
Intermediate code is the interface between front end 
and back end in a compiler 
Ideally the details of source language are confined to 
the front end and the details of target machines to the 
back end (a m*n model) 
In this chapter we study intermediate 
representations, static type checking and 
intermediate code generation 
Parser Static 
Checker 
Intermediate 
Code Generator 
Code 
Generator 
Front end Back end
Variants of syntax trees 
It is sometimes beneficial to crate a DAG instead of 
tree for Expressions. 
This way we can easily show the common sub-expressions 
and then use that knowledge during code 
generation 
Example: a+a*(b-c)+(b-c)*d 
+ 
+ * 
* 
- 
b c 
a 
d
SDD for creating DAG’s 
Production Semantic Rules 
1) E -> E1+T 
2) E -> E1-T 
3) E -> T 
4) T -> (E) 
5) T -> id 
6) T -> num 
E.node= new Node(‘+’, E1.node,T.node) 
E.node= new Node(‘-’, E1.node,T.node) 
E.node = T.node 
T.node = E.node 
T.node = new Leaf(id, id.entry) 
T.node = new Leaf(num, num.val) 
Example: 
1)p1=Leaf(id, entry-a) 
2)P2=Leaf(id, entry-a)=p1 
3)p3=Leaf(id, entry-b) 
4)p4=Leaf(id, entry-c) 
5)p5=Node(‘-’,p3,p4) 
6)p6=Node(‘*’,p1,p5) 
7)p7=Node(‘+’,p1,p6) 
8) p8=Leaf(id,entry-b)=p3 
9) p9=Leaf(id,entry-c)=p4 
10) p10=Node(‘-’,p3,p4)=p5 
11) p11=Leaf(id,entry-d) 
12) p12=Node(‘*’,p5,p11) 
13) p13=Node(‘+’,p7,p12)
Value-number method for 
constructing DAG’s 
= 
+ 
i 10 
Algorithm 
Search the array for a node M with label op, left child l 
and right child r 
If there is such a node, return the value number M 
If not create in the array a new node N with label op, 
left child l, and right child r and return its value 
We may use a hash table 
id To entry for i 
num 10 
+ 1 2 
3 1 3
Three address code 
In a three address code there is at most one operator 
at the right side of an instruction 
Example: 
+ 
+ * 
* 
- 
b c 
a 
d 
t1 = b – c 
t2 = a * t1 
t3 = a + t2 
t4 = t1 * d 
t5 = t3 + t4
Forms of three address 
instructions 
x = y op z 
x = op y 
x = y 
goto L 
if x goto L and ifFalse x goto L 
if x relop y goto L 
Procedure calls using: 
 param x 
 call p,n 
 y = call p,n 
x = y[i] and x[i] = y 
x = &y and x = *y and *x =y
Example 
do i = i+1; while (a[i] < v); 
L: t1 = i + 1 
i = t1 
t2 = i * 8 
t3 = a[t2] 
if t3 < v goto L 
Symbolic labels 
100: t1 = i + 1 
101: i = t1 
102: t2 = i * 8 
103: t3 = a[t2] 
104: if t3 < v goto 100 
Position numbers
Data structures for three 
address codes 
Quadruples 
Has four fields: op, arg1, arg2 and result 
Triples 
Temporaries are not used and instead references to 
instructions are made 
Indirect triples 
In addition to triples we use a list of pointers to triples
Example 
b * minus c + b * minus c 
Three address code 
t1 = minus c 
t2 = b * t1 
t3 = minus c 
t4 = b * t3 
t5 = t2 + t4 
a = t5 
Quadruples 
op arg1 arg2 result 
minus 
* minus c t3 
* 
+ 
= 
c t1 
b t1 t2 
b t3 t4 
t2 t4 t5 
t5 a 
Triples 
op arg1 arg2 
minus 
* minus c 
* 
+ 
= 
c 
b (0) 
b (2) 
(1) (3) 
a 
(4) 
012 
345 
Indirect Triples 
op arg1 arg2 
minus 
* minus c 
* 
+ 
= 
c 
b (0) 
b (2) 
(1) (3) 
a 
(4) 
012 
345 
op 
(0) 
(1) 
(2) 
(3) 
(4) 
(5) 
35 
36 
37 
38 
39 
40
Type Expressions 
Example: int[2][3] 
array(2,array(3,integer)) 
 A basic type is a type expression 
 A type name is a type expression 
 A type expression can be formed by applying the array type 
constructor to a number and a type expression. 
 A record is a data structure with named field 
 A type expression can be formed by using the type constructor  for 
function types 
 If s and t are type expressions, then their Cartesian product s*t is a 
type expression 
 Type expressions may contain variables whose values are type 
expressions
Type Equivalence 
They are the same basic type. 
They are formed by applying the same constructor to 
structurally equivalent types. 
One is a type name that denotes the other.
Declarations
Storage Layout for Local Names 
Computing types and their widths
Storage Layout for Local Names 
Syntax-directed translation of array types
Sequences of Declarations 
 
Actions at the end: 

Fields in Records and Classes 
 

Translation of Expressions and 
Statements 
We discussed how to find the types and offset of 
variables 
We have therefore necessary preparations to discuss 
about translation to intermediate code 
We also discuss the type checking
Three-address code for expressions
Incremental Translation
Addressing Array Elements 
Layouts for a two-dimensional array:
Semantic actions for array reference
Translation of Array References 
Nonterminal L has three synthesized 
attributes: 
L.addr 
L.array 
L.type
Conversions between primitive 
types in Java
Introducing type conversions into 
expression evaluation
Abstract syntax tree for the 
function definition 
fun length(x) = 
if null(x) then 0 else length(tl(x)+1) 
This is a polymorphic function 
in ML language
Inferring a type for the function length
Algorithm for Unification
Unification algorithm 
boolean unify (Node m, Node n) { 
s = find(m); t = find(n); 
if ( s = t ) return true; 
else if ( nodes s and t represent the same basic type ) return true; 
else if (s is an op-node with children s1 and s2 and 
t is an op-node with children t1 and t2) { 
union(s , t) ; 
return unify(s1, t1) and unify(s2, t2); 
} 
else if s or t represents a variable { 
union(s, t) ; 
return true; 
} 
else return false; 
}
Control Flow 
boolean expressions are often used to: 
Alter the flow of control. 
Compute logical values.
Short-Circuit Code 
 

Flow-of-Control Statements
Syntax-directed definition
Generating three-address code for booleans
translation of a simple if-statement 
 

Backpatching 
Previous codes for Boolean expressions insert symbolic labels for 
jumps 
It therefore needs a separate pass to set them to appropriate addresses 
We can use a technique named backpatching to avoid this 
We assume we save instructions into an array and labels will be 
indices in the array 
For nonterminal B we use two attributes B.truelist and B.falselist 
together with following functions: 
makelist(i): create a new list containing only I, an index into the array 
of instructions 
Merge(p1,p2): concatenates the lists pointed by p1 and p2 and returns a 
pointer to the concatenated list 
Backpatch(p,i): inserts i as the target label for each of the instruction 
on the list pointed to by p
Backpatching for Boolean Expressions 
 

Backpatching for Boolean Expressions 
Annotated parse tree for x < 100 || x > 200 && x ! = y
Flow-of-Control Statements
Translation of a switch-statement
Readings 
Chapter 6 of the book

More Related Content

What's hot

A Role of Lexical Analyzer
A Role of Lexical AnalyzerA Role of Lexical Analyzer
A Role of Lexical AnalyzerArchana Gopinath
 
Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)   Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design) Tasif Tanzim
 
Intermediate code generation
Intermediate code generationIntermediate code generation
Intermediate code generationRamchandraRegmi
 
Peephole optimization techniques in compiler design
Peephole optimization techniques in compiler designPeephole optimization techniques in compiler design
Peephole optimization techniques in compiler designAnul Chaudhary
 
Error Detection & Recovery
Error Detection & RecoveryError Detection & Recovery
Error Detection & RecoveryAkhil Kaushik
 
A simple approach of lexical analyzers
A simple approach of lexical analyzersA simple approach of lexical analyzers
A simple approach of lexical analyzersArchana Gopinath
 
Syntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address CodeSyntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address Codesanchi29
 
Structure of the compiler
Structure of the compilerStructure of the compiler
Structure of the compilerSudhaa Ravi
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design MAHASREEM
 
Issues in the design of Code Generator
Issues in the design of Code GeneratorIssues in the design of Code Generator
Issues in the design of Code GeneratorDarshan sai Reddy
 
Lecture 14 run time environment
Lecture 14 run time environmentLecture 14 run time environment
Lecture 14 run time environmentIffat Anjum
 
Symbol table in compiler Design
Symbol table in compiler DesignSymbol table in compiler Design
Symbol table in compiler DesignKuppusamy P
 

What's hot (20)

A Role of Lexical Analyzer
A Role of Lexical AnalyzerA Role of Lexical Analyzer
A Role of Lexical Analyzer
 
Input-Buffering
Input-BufferingInput-Buffering
Input-Buffering
 
Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)   Intermediate code generation (Compiler Design)
Intermediate code generation (Compiler Design)
 
Recognition-of-tokens
Recognition-of-tokensRecognition-of-tokens
Recognition-of-tokens
 
COMPILER DESIGN Run-Time Environments
COMPILER DESIGN Run-Time EnvironmentsCOMPILER DESIGN Run-Time Environments
COMPILER DESIGN Run-Time Environments
 
Code generation
Code generationCode generation
Code generation
 
Intermediate code generation
Intermediate code generationIntermediate code generation
Intermediate code generation
 
Peephole optimization techniques in compiler design
Peephole optimization techniques in compiler designPeephole optimization techniques in compiler design
Peephole optimization techniques in compiler design
 
Error Detection & Recovery
Error Detection & RecoveryError Detection & Recovery
Error Detection & Recovery
 
A simple approach of lexical analyzers
A simple approach of lexical analyzersA simple approach of lexical analyzers
A simple approach of lexical analyzers
 
NLP_KASHK:Minimum Edit Distance
NLP_KASHK:Minimum Edit DistanceNLP_KASHK:Minimum Edit Distance
NLP_KASHK:Minimum Edit Distance
 
Phases of Compiler
Phases of CompilerPhases of Compiler
Phases of Compiler
 
Syntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address CodeSyntax-Directed Translation into Three Address Code
Syntax-Directed Translation into Three Address Code
 
Structure of the compiler
Structure of the compilerStructure of the compiler
Structure of the compiler
 
Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design Syntax Analysis in Compiler Design
Syntax Analysis in Compiler Design
 
COMPILER DESIGN- Syntax Directed Translation
COMPILER DESIGN- Syntax Directed TranslationCOMPILER DESIGN- Syntax Directed Translation
COMPILER DESIGN- Syntax Directed Translation
 
Issues in the design of Code Generator
Issues in the design of Code GeneratorIssues in the design of Code Generator
Issues in the design of Code Generator
 
Lecture 14 run time environment
Lecture 14 run time environmentLecture 14 run time environment
Lecture 14 run time environment
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
Symbol table in compiler Design
Symbol table in compiler DesignSymbol table in compiler Design
Symbol table in compiler Design
 

Similar to Chapter 6 intermediate code generation

14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...venkatapranaykumarGa
 
Intermediate code generator
Intermediate code generatorIntermediate code generator
Intermediate code generatorsanchi29
 
Intermediate code generation1
Intermediate code generation1Intermediate code generation1
Intermediate code generation1Shashwat Shriparv
 
Intermediate code representations
Intermediate code representationsIntermediate code representations
Intermediate code representationsahmed51236
 
Intermediate code generation
Intermediate code generationIntermediate code generation
Intermediate code generationAkshaya Arunan
 
Compiler chapter six .ppt course material
Compiler chapter six .ppt course materialCompiler chapter six .ppt course material
Compiler chapter six .ppt course materialgadisaAdamu
 
Chapter Eight(2)
Chapter Eight(2)Chapter Eight(2)
Chapter Eight(2)bolovv
 
Presentation(intermediate code generation)
Presentation(intermediate code generation)Presentation(intermediate code generation)
Presentation(intermediate code generation)Sourov Kumar Ron
 
Chapter 11 - Intermediate Code Generation.pdf
Chapter 11 - Intermediate Code Generation.pdfChapter 11 - Intermediate Code Generation.pdf
Chapter 11 - Intermediate Code Generation.pdfRAnwarpasha
 
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...Saikrishna Tanguturu
 
Chapter Two(1)
Chapter Two(1)Chapter Two(1)
Chapter Two(1)bolovv
 
In the Notes on Programming Language Syntax page, an example par.docx
In the Notes on Programming Language Syntax page, an example par.docxIn the Notes on Programming Language Syntax page, an example par.docx
In the Notes on Programming Language Syntax page, an example par.docxmecklenburgstrelitzh
 

Similar to Chapter 6 intermediate code generation (20)

Chapter 6 Intermediate Code Generation
Chapter 6   Intermediate Code GenerationChapter 6   Intermediate Code Generation
Chapter 6 Intermediate Code Generation
 
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
 
Intermediate code generator
Intermediate code generatorIntermediate code generator
Intermediate code generator
 
Intermediate code generation1
Intermediate code generation1Intermediate code generation1
Intermediate code generation1
 
Assignment12
Assignment12Assignment12
Assignment12
 
Intermediate code representations
Intermediate code representationsIntermediate code representations
Intermediate code representations
 
Compiler notes--unit-iii
Compiler notes--unit-iiiCompiler notes--unit-iii
Compiler notes--unit-iii
 
Intermediate code generation
Intermediate code generationIntermediate code generation
Intermediate code generation
 
Compiler chapter six .ppt course material
Compiler chapter six .ppt course materialCompiler chapter six .ppt course material
Compiler chapter six .ppt course material
 
Python
PythonPython
Python
 
Chapter Eight(2)
Chapter Eight(2)Chapter Eight(2)
Chapter Eight(2)
 
Ch8a
Ch8aCh8a
Ch8a
 
Presentation(intermediate code generation)
Presentation(intermediate code generation)Presentation(intermediate code generation)
Presentation(intermediate code generation)
 
Chapter 11 - Intermediate Code Generation.pdf
Chapter 11 - Intermediate Code Generation.pdfChapter 11 - Intermediate Code Generation.pdf
Chapter 11 - Intermediate Code Generation.pdf
 
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
 
Python PPT2
Python PPT2Python PPT2
Python PPT2
 
Chapter Two(1)
Chapter Two(1)Chapter Two(1)
Chapter Two(1)
 
In the Notes on Programming Language Syntax page, an example par.docx
In the Notes on Programming Language Syntax page, an example par.docxIn the Notes on Programming Language Syntax page, an example par.docx
In the Notes on Programming Language Syntax page, an example par.docx
 
ch08.ppt
ch08.pptch08.ppt
ch08.ppt
 
C pointers and references
C pointers and referencesC pointers and references
C pointers and references
 

More from Vipul Naik

Servlet viva questions
Servlet viva questionsServlet viva questions
Servlet viva questionsVipul Naik
 
Jsp viva questions
Jsp viva questionsJsp viva questions
Jsp viva questionsVipul Naik
 
Javascript viva questions
Javascript viva questionsJavascript viva questions
Javascript viva questionsVipul Naik
 
Xml viva questions
Xml viva questionsXml viva questions
Xml viva questionsVipul Naik
 
Java questions for viva
Java questions for vivaJava questions for viva
Java questions for vivaVipul Naik
 
Html viva questions
Html viva questionsHtml viva questions
Html viva questionsVipul Naik
 

More from Vipul Naik (6)

Servlet viva questions
Servlet viva questionsServlet viva questions
Servlet viva questions
 
Jsp viva questions
Jsp viva questionsJsp viva questions
Jsp viva questions
 
Javascript viva questions
Javascript viva questionsJavascript viva questions
Javascript viva questions
 
Xml viva questions
Xml viva questionsXml viva questions
Xml viva questions
 
Java questions for viva
Java questions for vivaJava questions for viva
Java questions for viva
 
Html viva questions
Html viva questionsHtml viva questions
Html viva questions
 

Recently uploaded

Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...ranjana rawat
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 

Recently uploaded (20)

Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 

Chapter 6 intermediate code generation

  • 1. Chapter 6 Intermediate Code Generation
  • 2. Outline Variants of Syntax Trees Three-address code Types and declarations Translation of expressions Type checking Control flow Backpatching
  • 3. Introduction Intermediate code is the interface between front end and back end in a compiler Ideally the details of source language are confined to the front end and the details of target machines to the back end (a m*n model) In this chapter we study intermediate representations, static type checking and intermediate code generation Parser Static Checker Intermediate Code Generator Code Generator Front end Back end
  • 4. Variants of syntax trees It is sometimes beneficial to crate a DAG instead of tree for Expressions. This way we can easily show the common sub-expressions and then use that knowledge during code generation Example: a+a*(b-c)+(b-c)*d + + * * - b c a d
  • 5. SDD for creating DAG’s Production Semantic Rules 1) E -> E1+T 2) E -> E1-T 3) E -> T 4) T -> (E) 5) T -> id 6) T -> num E.node= new Node(‘+’, E1.node,T.node) E.node= new Node(‘-’, E1.node,T.node) E.node = T.node T.node = E.node T.node = new Leaf(id, id.entry) T.node = new Leaf(num, num.val) Example: 1)p1=Leaf(id, entry-a) 2)P2=Leaf(id, entry-a)=p1 3)p3=Leaf(id, entry-b) 4)p4=Leaf(id, entry-c) 5)p5=Node(‘-’,p3,p4) 6)p6=Node(‘*’,p1,p5) 7)p7=Node(‘+’,p1,p6) 8) p8=Leaf(id,entry-b)=p3 9) p9=Leaf(id,entry-c)=p4 10) p10=Node(‘-’,p3,p4)=p5 11) p11=Leaf(id,entry-d) 12) p12=Node(‘*’,p5,p11) 13) p13=Node(‘+’,p7,p12)
  • 6. Value-number method for constructing DAG’s = + i 10 Algorithm Search the array for a node M with label op, left child l and right child r If there is such a node, return the value number M If not create in the array a new node N with label op, left child l, and right child r and return its value We may use a hash table id To entry for i num 10 + 1 2 3 1 3
  • 7. Three address code In a three address code there is at most one operator at the right side of an instruction Example: + + * * - b c a d t1 = b – c t2 = a * t1 t3 = a + t2 t4 = t1 * d t5 = t3 + t4
  • 8. Forms of three address instructions x = y op z x = op y x = y goto L if x goto L and ifFalse x goto L if x relop y goto L Procedure calls using:  param x  call p,n  y = call p,n x = y[i] and x[i] = y x = &y and x = *y and *x =y
  • 9. Example do i = i+1; while (a[i] < v); L: t1 = i + 1 i = t1 t2 = i * 8 t3 = a[t2] if t3 < v goto L Symbolic labels 100: t1 = i + 1 101: i = t1 102: t2 = i * 8 103: t3 = a[t2] 104: if t3 < v goto 100 Position numbers
  • 10. Data structures for three address codes Quadruples Has four fields: op, arg1, arg2 and result Triples Temporaries are not used and instead references to instructions are made Indirect triples In addition to triples we use a list of pointers to triples
  • 11. Example b * minus c + b * minus c Three address code t1 = minus c t2 = b * t1 t3 = minus c t4 = b * t3 t5 = t2 + t4 a = t5 Quadruples op arg1 arg2 result minus * minus c t3 * + = c t1 b t1 t2 b t3 t4 t2 t4 t5 t5 a Triples op arg1 arg2 minus * minus c * + = c b (0) b (2) (1) (3) a (4) 012 345 Indirect Triples op arg1 arg2 minus * minus c * + = c b (0) b (2) (1) (3) a (4) 012 345 op (0) (1) (2) (3) (4) (5) 35 36 37 38 39 40
  • 12. Type Expressions Example: int[2][3] array(2,array(3,integer))  A basic type is a type expression  A type name is a type expression  A type expression can be formed by applying the array type constructor to a number and a type expression.  A record is a data structure with named field  A type expression can be formed by using the type constructor  for function types  If s and t are type expressions, then their Cartesian product s*t is a type expression  Type expressions may contain variables whose values are type expressions
  • 13. Type Equivalence They are the same basic type. They are formed by applying the same constructor to structurally equivalent types. One is a type name that denotes the other.
  • 15. Storage Layout for Local Names Computing types and their widths
  • 16. Storage Layout for Local Names Syntax-directed translation of array types
  • 17. Sequences of Declarations  Actions at the end: 
  • 18. Fields in Records and Classes  
  • 19. Translation of Expressions and Statements We discussed how to find the types and offset of variables We have therefore necessary preparations to discuss about translation to intermediate code We also discuss the type checking
  • 20. Three-address code for expressions
  • 22. Addressing Array Elements Layouts for a two-dimensional array:
  • 23. Semantic actions for array reference
  • 24. Translation of Array References Nonterminal L has three synthesized attributes: L.addr L.array L.type
  • 26. Introducing type conversions into expression evaluation
  • 27. Abstract syntax tree for the function definition fun length(x) = if null(x) then 0 else length(tl(x)+1) This is a polymorphic function in ML language
  • 28. Inferring a type for the function length
  • 30. Unification algorithm boolean unify (Node m, Node n) { s = find(m); t = find(n); if ( s = t ) return true; else if ( nodes s and t represent the same basic type ) return true; else if (s is an op-node with children s1 and s2 and t is an op-node with children t1 and t2) { union(s , t) ; return unify(s1, t1) and unify(s2, t2); } else if s or t represents a variable { union(s, t) ; return true; } else return false; }
  • 31. Control Flow boolean expressions are often used to: Alter the flow of control. Compute logical values.
  • 36. translation of a simple if-statement  
  • 37. Backpatching Previous codes for Boolean expressions insert symbolic labels for jumps It therefore needs a separate pass to set them to appropriate addresses We can use a technique named backpatching to avoid this We assume we save instructions into an array and labels will be indices in the array For nonterminal B we use two attributes B.truelist and B.falselist together with following functions: makelist(i): create a new list containing only I, an index into the array of instructions Merge(p1,p2): concatenates the lists pointed by p1 and p2 and returns a pointer to the concatenated list Backpatch(p,i): inserts i as the target label for each of the instruction on the list pointed to by p
  • 38. Backpatching for Boolean Expressions  
  • 39. Backpatching for Boolean Expressions Annotated parse tree for x < 100 || x > 200 && x ! = y
  • 41. Translation of a switch-statement
  • 42. Readings Chapter 6 of the book