KEMBAR78
Issues in design_of_code_generator | PPTX
Presented by,
M.Selva Vinitha
B.E/CSE
M.Kumarasamy college of engineering
Karur.
Code generator
 Final phase of compiler design
 Optimized intermediate code is provided as input
 It generates target code
2/27/2015 2Issues in design of code generator
Code generation and Instruction Selection
4
Symbol
table
input output
Front
end
Intermediate
Code
generator
Code
generator
2/27/2015 Issues in design of code generator
Contd…
 output code must be correct
 output code must be of high quality
 code generator should run efficiently
2/27/2015 4Issues in design of code generator
Pre-requisites
 Instruction set of target machine.
 Instruction addressing modes.
 No. of registers.
 Configuration of ALU
2/27/2015 5Issues in design of code generator
Issues in the design of a code
generator
 Input to the code generator
 Memory management
 Target programs
 Instruction selection
 Register allocation
 Evaluation order
 Approaches to code generation
2/27/2015 6Issues in design of code generator
Input to the code generator
 The intermediate representation of the source program
produced by the front end
 Several choices for the intermediate language
 Linear - postfix nottion
 3 address - quadruples
 Virtual machie - stack machine code
 Graphical - syntax tree &dags
2/27/2015 7Issues in design of code generator
Memory management
 Mapping names in the source program to addresses of data
objects in run-time memory
 Done by the front end and the code generator.
 A name in a three- address statement refers to a symbol-
table entry for the name.
 A relative address can be determined
2/27/2015 8Issues in design of code generator
Target programs
 Absolute machine language
Relocatable machine language
 Assembly language
2/27/2015 9Issues in design of code generator
Contd..
Absolute machine language:
 Produce an absolute machine language program
 can be placed in a fixed location in memory and
immediately executed.
2/27/2015 10Issues in design of code generator
Contd..
Relocatable machine language:
Producing a relocatable machine language program
subprograms to be compiled separately.
relocatable object modules can be linked together and loaded
for execution by a linking loader.
must provide explicit relocation information to the loader, to
link the separately compiled program segments.
2/27/2015 11Issues in design of code generator
Contd…
Assembly language:
Producing an assembly language program
makes the process of code generation easier
2/27/2015 12Issues in design of code generator
Instruction selection
The factors to be considered during instruction selection are:
 The uniformity and completeness of the instruction set.
 Instruction speed and machine idioms.
 Size of the instruction set.
2/27/2015 13Issues in design of code generator
Contd…
Eg., for the following address code is:
a := b + c
d := a + e
inefficient assembly code is:
MOV b, R0 R0 ← b
ADD c, R0 R0 ← c + R0
MOV R0, a a ← R0
MOV a, R0 R0 ← a
ADD e, R0 R0 ← e + R0
MOV R0 , d d ← R0
Here the fourth statement is redundant, and so is the third
statement if ,
'a' is not subsequently used.
2/27/2015 14Issues in design of code generator
Register allocation
• Instructions with register operands are usually shorter and
faster
• Efficient utilization of registers is important in
generating good code.
2/27/2015 15Issues in design of code generator
Contd..
Register allocation phase:
• Select the set of variables that will reside in registers
Register assignment phase:
• Pick the specific register that a variable will reside in.
2/27/2015 16Issues in design of code generator
Evaluation order
 The order in which computations are performed
 Affect the efficiency of the target code.
 Some computation orders require fewer registers to hold
intermediate results
2/27/2015 17Issues in design of code generator
Approaches to code generation
 Most important criteria for code generator is that it
produces correct code
 Correctness takes on special signification
 It contains a straightforward code generation algorithm
 The output of such code generator can be improved by
peephole optimization technique
2/27/2015 18Issues in design of code generator
Conclusion
Output of code generator phase is dependent on:
 Target language
 Operating system
 Memory management system
 Instruction selection
 Register allocation
 Evaluation order
2/27/2015 19Issues in design of code generator

Issues in design_of_code_generator

  • 1.
  • 2.
    Code generator  Finalphase of compiler design  Optimized intermediate code is provided as input  It generates target code 2/27/2015 2Issues in design of code generator
  • 3.
    Code generation andInstruction Selection 4 Symbol table input output Front end Intermediate Code generator Code generator 2/27/2015 Issues in design of code generator
  • 4.
    Contd…  output codemust be correct  output code must be of high quality  code generator should run efficiently 2/27/2015 4Issues in design of code generator
  • 5.
    Pre-requisites  Instruction setof target machine.  Instruction addressing modes.  No. of registers.  Configuration of ALU 2/27/2015 5Issues in design of code generator
  • 6.
    Issues in thedesign of a code generator  Input to the code generator  Memory management  Target programs  Instruction selection  Register allocation  Evaluation order  Approaches to code generation 2/27/2015 6Issues in design of code generator
  • 7.
    Input to thecode generator  The intermediate representation of the source program produced by the front end  Several choices for the intermediate language  Linear - postfix nottion  3 address - quadruples  Virtual machie - stack machine code  Graphical - syntax tree &dags 2/27/2015 7Issues in design of code generator
  • 8.
    Memory management  Mappingnames in the source program to addresses of data objects in run-time memory  Done by the front end and the code generator.  A name in a three- address statement refers to a symbol- table entry for the name.  A relative address can be determined 2/27/2015 8Issues in design of code generator
  • 9.
    Target programs  Absolutemachine language Relocatable machine language  Assembly language 2/27/2015 9Issues in design of code generator
  • 10.
    Contd.. Absolute machine language: Produce an absolute machine language program  can be placed in a fixed location in memory and immediately executed. 2/27/2015 10Issues in design of code generator
  • 11.
    Contd.. Relocatable machine language: Producinga relocatable machine language program subprograms to be compiled separately. relocatable object modules can be linked together and loaded for execution by a linking loader. must provide explicit relocation information to the loader, to link the separately compiled program segments. 2/27/2015 11Issues in design of code generator
  • 12.
    Contd… Assembly language: Producing anassembly language program makes the process of code generation easier 2/27/2015 12Issues in design of code generator
  • 13.
    Instruction selection The factorsto be considered during instruction selection are:  The uniformity and completeness of the instruction set.  Instruction speed and machine idioms.  Size of the instruction set. 2/27/2015 13Issues in design of code generator
  • 14.
    Contd… Eg., for thefollowing address code is: a := b + c d := a + e inefficient assembly code is: MOV b, R0 R0 ← b ADD c, R0 R0 ← c + R0 MOV R0, a a ← R0 MOV a, R0 R0 ← a ADD e, R0 R0 ← e + R0 MOV R0 , d d ← R0 Here the fourth statement is redundant, and so is the third statement if , 'a' is not subsequently used. 2/27/2015 14Issues in design of code generator
  • 15.
    Register allocation • Instructionswith register operands are usually shorter and faster • Efficient utilization of registers is important in generating good code. 2/27/2015 15Issues in design of code generator
  • 16.
    Contd.. Register allocation phase: •Select the set of variables that will reside in registers Register assignment phase: • Pick the specific register that a variable will reside in. 2/27/2015 16Issues in design of code generator
  • 17.
    Evaluation order  Theorder in which computations are performed  Affect the efficiency of the target code.  Some computation orders require fewer registers to hold intermediate results 2/27/2015 17Issues in design of code generator
  • 18.
    Approaches to codegeneration  Most important criteria for code generator is that it produces correct code  Correctness takes on special signification  It contains a straightforward code generation algorithm  The output of such code generator can be improved by peephole optimization technique 2/27/2015 18Issues in design of code generator
  • 19.
    Conclusion Output of codegenerator phase is dependent on:  Target language  Operating system  Memory management system  Instruction selection  Register allocation  Evaluation order 2/27/2015 19Issues in design of code generator