Compiler Construction - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Compiler Construction

Description:

Compiler Construction Sohail Aslam Lecture 36 Three-Address Code Three-address code is attractive for several reasons: Three-Address Code absence of destructive ... – PowerPoint PPT presentation

Number of Views:471
Avg rating:3.0/5.0
Slides: 18
Provided by: whit1162
Category:

less

Transcript and Presenter's Notes

Title: Compiler Construction


1
Compiler Construction
  • Sohail Aslam
  • Lecture 36

2
Three-Address Code
  • Three-address code is attractive for several
    reasons

3
Three-Address Code
  • absence of destructive operators gives the
    compiler freedom to reuse names and values
  • three-address code is reasonably compact
    operations are 1 to 2 bytes addresses are 4 bytes

4
Three-Address Code
  • absence of destructive operators gives the
    compiler freedom to reuse names and values
  • three-address code is reasonably compact
    operations are 1 to 2 bytes addresses are 4 bytes

5
Three-Address Code
  • many modern processors implement three-address
    operations, a three-address code models their
    properties well

6
Syntax-directed Translation
  • We now consider syntax-directed translation
    schemes using three-address code for various
    programming constructs
  • We start with the assignment statement

7
Syntax-directed Translation
  • We now consider syntax-directed translation
    schemes using three-address code for various
    programming constructs
  • We start with the assignment statement

8
Production translation scheme
S ? id E p lookup(id.name) emit( p, , E.place)
E ? E1 E2 E.place newtemp() emit( E.place, , E1.place, , E2.place)
E ? E1 ? E2 E.place newtemp() emit( E.place, , E1.place, ?, E2.place)
9
Production translation scheme
E ? E1 E.place newtemp() emit( E.place, , , E1.place)
E ? ( E1 ) E.place E1.place
E ? id p lookup(id.name) emit( E.place, , p )
10
Assignment Statement
  • The tranlation scheme uses a symbol table for
    identifiers and temporaries
  • Every time the parser encounters an identifier,
    it installs it in the symbol table.

11
Assignment Statement
  • The tranlation scheme uses a symbol table for
    identifiers and temporaries
  • Every time the parser encounters an identifier,
    it installs it in the symbol table.

12
Assignment Statement
  • The symbol table can be implemented as a hash
    table or using some other efficient data
    structure for table.

13
Assignment Statement
  • The routine lookup(name) checks if there an entry
    for the name in the symbol table
  • If the name is found, the routine returns a
    pointer to entry.

14
Assignment Statement
  • The routine lookup(name) checks if there an entry
    for the name in the symbol table
  • If the name is found, the routine returns a
    pointer to entry.

15
Assignment Statement
  • The routine newtemp() returns a new temporary in
    response to successive calls
  • Temporaries can be placed in the symbol table

16
Assignment Statement
  • The routine emit() generates a three-address
    statement which can either be held in memory or
    written to a file

17
Example
  • Here is the bottom-up parse of the assignment
    statement
  • a b-c b-c
  • and the syntax-directed translation into
    three-address code
Write a Comment
User Comments (0)
About PowerShow.com