Intermediate Code Representations

22
Intermediate Code Representations

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 of Intermediate Code Representations

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