intermediate code representations

22
Intermediate Code Representations

Upload: tamara-rodriquez

Post on 31-Dec-2015

59 views

Category:

Documents


2 download

DESCRIPTION

Intermediate Code Representations. Conceptual phases of compiler. Lexical Analysis (scanner). Semantic Analysis. Code generation. Syntax analysis (parser). Code optimization. Optimized code. Sequence of tokens. Intermediate code - IR 1. Intermediate code IR 2. Target code. - PowerPoint PPT Presentation

TRANSCRIPT

Intermediate Code Representations

Conceptual phases of compiler

LexicalAnalysis(scanner)

Syntaxanalysis(parser)

SemanticAnalysis

Codeoptimization

Codegeneration

Sequence oftokens

Intermediatecode - IR1

Intermediatecode IR2

Optimizedcode Target code

Front Endmachine independentlanguage dependent

Middle Back Endmachine dependentlanguage independent

Why use an IR?

IR – Encodes Compiler’s Program Knowledge

Thus, some IR PROPERTIES:

•Ease of generation•Ease of manipulation•Size•Freedom of Expression•Level of Abstraction

Selecting IR is critical.

3 Categories of IRs

1.Structural/Graphical - AST and Concrete ST - call graph - program dependence graph (PDG)2. Linear - 3-address code - abstract stack machine code3.Hybrid - control flow graph (CFG)

Level of Abstraction

Consider:A[j,i] = @A + j*10 + i

[ ]

A I J

Loadi 1, R1Sub RJ, R1, R2Loadi 10, R3Mult R2, R3, R4Sub Ri, R1, r5Add R4, R5, R6Loadi @A, R7Add R7, R6, R8Load R8, RAIJ

Some Design Issues for IRs

Questions to Ponder:

1.What is the minimum needed in the language’s set of operators?

2.What is the advantage of a small set of operators?

2. What is the concern of designing the operationsClose to actual machine operations?

4. What is the potential problem of having a smallSet of IR operations?

High LevelGraphical Representations

Consider:

A -> V := E

E -> E + E | E * E | - E | id

String: a := b * - c + b * - c

Exercise: Concrete ST? AST? DAG?

Linear IRs: Three Address Code

• Sequence of instructions of the form

X := y op z

where x, y and z are variable names, constants, or compiler generated variables (“temporaries”)

• Only one operator is permitted on the RHS – expressions computed using temporaries

9

Simple Linear IRs

Write the 3 – address code for:

a := b * - c + b * - c

? = -c

= b * ?

… complete the code from the ast? The dag?

Exercise

• Give the 3 address code for:

• Z := x * y + a[j] / sum(b)

14

More Simple Linear IRs

Stack machine code:

push, pop, ops

Consider: x – 2 * y

Advantages?

Hybrid IRs

Exercise – Construct the CFG

Call Graph Representation

Node = function or methodEdge from A to B : A has a call site where B is potentially called

Exercise: Construct a call graph

Multiple IRs: WHIRL

Key Highlights of IRs