1 CS 201 Compiler Construction Lecture 1 Introduction.
-
date post
20-Dec-2015 -
Category
Documents
-
view
220 -
download
2
Transcript of 1 CS 201 Compiler Construction Lecture 1 Introduction.
1
CS 201Compiler Construction
Lecture 1Introduction
2
Instructor Information
Rajiv GuptaOffice: Engg.II Room 408E-mail: [email protected]: (951) 827-2558Office Hours: T, Th 1-2 pm
3
Course Requirements
Grading:Test 1: 35 pointsTest 2: 35 pointsProject: 30 points
4
Course Overview
Three Address Intermediate Code
Arithmetic Operationsdst = src1 op src2
where op in {+, -, *, /, %}Relational Operators
dst = src1 relop src2where relop in {<,<=,!
=,==,>=,>}Logical Operations
dst = src lop src2, where lop in {||,&&}dst = ! src
5
Three Address Intermediate Code
Array Accessesdst = src[index]dst[index] = src
Pointersdst = & src* dst = src
Copy Assignmentdst = src
6
Three Address Intermediate Code
Branchesunconditional:
goto labelconditional:
if predicate goto labelor
if src1 relop src2 goto labellabels:
declared or instruction numbers
7
Examples
8
See handouts.
9
Control Flow Graph (CFG)
Intermediate Code can be transformed from linear representation to a directed graph form called Control flow Graph:
Nodes – Basic Blocks: Basic block consists of a sequence of intermediate code statements that must be entered at the top and exited at the bottom, i.e. once the block is entered, all intermediate code statements will be executed.
Edges: directed edges connect basic blocks according to control flow.
CFG representation will be used for program analysis and optimization.
CFG Construction Algorithm
• Identify Leaders: the first instruction in a basic block is a leader.– First instruction in the program– Target instruction of a conditional or
unconditional branch– Instruction immediately following a
conditional or unconditional branch
• Construct Basic Blocks: – Starting from the leader append subsequent
instructions up to, but not including, the next leader or the end of the program
10
CFG Construction Algorithm
• Add Edges: add a directed edge from basic block B1 to basic block B2 if:– There is a conditional or unconditional
branch from the last statement in B1 to the leader of B2; or
– B2 immediately follows B1 in program order and B1 does not end in an unconditional branch.
11
Example
12
1. A = 42. T1 = A * B3. T2 = T1 / C4. If T2<W goto 75. M = T1 * K6. T3 = M + I7. H = I8. M = T3 – H9. If T3>= 0 goto 1110. goto 311. Halt