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