september 16, 2014

19
1 October 31, 20 22 1 October 31, 20 October 31, 20 22 22 Azusa, Azusa, CA CA Sheldon X. Liang Ph. D. Computer Science at Computer Science at Azusa Azusa Pacific University Pacific University Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/ CS400 Compiler Construction CS400 Compiler Construction

Upload: luisa

Post on 14-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Computer Science at Azusa Pacific University. CS400 Compiler Construction. Sheldon X. Liang Ph. D. September 16, 2014. Azusa, CA. 1. September 16, 2014. Azusa Pacific University, Azusa, CA 91702, Tel: (800) 8 25-5278 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: September 16, 2014

1

April 21, 20231

April 21, 2023April 21, 2023 Azusa, CAAzusa, CA

Sheldon X. Liang Ph. D.

Computer Science at Computer Science at Azusa Pacific UniversityAzusa Pacific University

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS400 Compiler ConstructionCS400 Compiler Construction

Page 2: September 16, 2014

2

Intermediate Code Generation

• Facilitates retargeting: enables attaching a back end for the new machine to an existing front end

• Enables machine-independent code optimization

Front end Back endIntermediate

code

Targetmachine

code

April 21, 20232

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 3: September 16, 2014

3

April 21, 20233

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Keep in mind following questionsKeep in mind following questions

• Intermediate Representations – Why? – Machine-independent Opt– Machine-independent Optimization– Machine-independent Checking

• High level IRs– Graphical Representations:– AST: abstract syntax tree– DAG: directed acyclic diagram

• Low-level IRs– Postfix notation (byte-code)– Three address code– Two address code

Page 4: September 16, 2014

4

Intermediate Representations

• Graphical representations (e.g. AST)• Postfix notation: operations on values stored

on operand stack (similar to JVM bytecode)• Three-address code: (e.g. triples and quads)

x := y op z • Two-address code:

x := op ywhich is the same as x := x op y

April 21, 20234

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 5: September 16, 2014

5

Syntax-Directed Translation of Abstract Syntax Trees

ProductionS id := EE E1 + E2

E E1 * E2

E - E1

E ( E1 )E id

Semantic RuleS.nptr := mknode(‘:=’, mkleaf(id, id.entry), E.nptr)E.nptr := mknode(‘+’, E1.nptr, E2.nptr)E.nptr := mknode(‘*’, E1.nptr, E2.nptr)E.nptr := mknode(‘uminus’, E1.nptr)E.nptr := E1.nptrE.nptr := mkleaf(id, id.entry)

April 21, 20235

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 6: September 16, 2014

6

Abstract Syntax Trees

Pro: easy restructuring of codeand/or expressions forintermediate code optimization

Cons: memory intensive

April 21, 20236

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 7: September 16, 2014

7

Abstract Syntax Trees versus DAGs

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

April 21, 20237

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

DAG: directed acyclic graph uminus: unary minus

Page 8: September 16, 2014

8

Postfix Notationa := b * -c + b * -c

a b c uminus * b c uminus * + assigniload 2 // push biload 3 // push cineg // uminusimul // *iload 2 // push biload 3 // push cineg // uminusimul // *iadd // +istore 1 // store a

Bytecode (for example)

Postfix notation representsoperations on a stack

Pro: easy to generateCons: stack operations are more

difficult to optimize

April 21, 20238

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 9: September 16, 2014

9

Three-Address Code

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

t1 := - ct2 := b * t1t3 := - ct4 := b * t3t5 := t2 + t4a := t5

Linearized representationof a syntax tree

t1 := - ct2 := b * t1t5 := t2 + t2a := t5

Linearized representationof a syntax DAG

April 21, 20239

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 10: September 16, 2014

10

Three-Address Statements

• Assignment statements: x := y op z, x := op y

• Indexed assignments: x := y[i], x[i] := y

• Pointer assignments: x := &y, x := *y, *x := y

• Copy statements: x := y

• Unconditional jumps: goto lab

• Conditional jumps: if x relop y goto lab

• Function calls: param x… call p, nreturn y

April 21, 202310

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 11: September 16, 2014

11

Syntax-Directed Translation into Three-Address CodeSynthesized attributes:S.code three-address code for SS.begin label to start of S or nilS.after label to end of S or nilE.code three-address code for EE.place a name holding the value of E

ProductionsS id := E | while E do SE E + E | E * E | - E | ( E ) | id | num

gen(E.place ‘:=’ E1.place ‘+’ E2.place)

t3 := t1 + t2Code generation

April 21, 202311

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 12: September 16, 2014

12

Syntax-Directed Translation into Three-Address Code (cont’d)

ProductionsS id := ES while E do S1

E E1 + E2

E E1 * E2

E - E1

E ( E1 )

E id

E num

Semantic rulesS.code := E.code || gen(id.place ‘:=’ E.place); S.begin := S.after := nil(see next slide)

E.place := newtemp();E.code := E1.code || E2.code || gen(E.place ‘:=’ E1.place ‘+’ E2.place)E.place := newtemp();E.code := E1.code || E2.code || gen(E.place ‘:=’ E1.place ‘*’ E2.place)E.place := newtemp();E.code := E1.code || gen(E.place ‘:=’ ‘uminus’ E1.place)E.place := E1.placeE.code := E1.codeE.place := id.nameE.code := ‘’E.place := newtemp();E.code := gen(E.place ‘:=’ num.value) April 21, 2023

12Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 13: September 16, 2014

13

Syntax-Directed Translation into Three-Address Code (cont’d)

ProductionS while E do S1

Semantic ruleS.begin := newlabel()S.after := newlabel()S.code := gen(S.begin ‘:’) ||

E.code || gen(‘if’ E.place ‘=‘ ‘0’ ‘goto’ S.after) || S1.code || gen(‘goto’ S.begin) || gen(S.after ‘:’)

if E.place = 0 goto S.after

S.code

E.code

goto S.begin

S.begin:

S.after:

April 21, 202313

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 14: September 16, 2014

14

Example

i := 2 * n + kwhile i do i := i - k

t1 := 2 t2 := t1 * n t3 := t2 + k i := t3L1: if i = 0 goto L2 t4 := i - k i := t4 goto L1L2:

April 21, 202314

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 15: September 16, 2014

15

Implementation of Three-Address Statements: Quads

# Op Arg1 Arg2 Res

(0) uminus c t1

(1) * b t1 t2

(2) uminus c t3

(3) * b t3 t4

(4) + t2 t4 t5

(5) := t5 a

Quads (quadruples)

Pro: easy to rearrange code for global optimizationCons: lots of temporaries

April 21, 202315

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 16: September 16, 2014

16

Implementation of Three-Address Statements: Triples

# Op Arg1 Arg2

(0) uminus c

(1) * b (0)

(2) uminus c

(3) * b (2)

(4) + (1) (3)

(5) := a (4)

Triples

Pro: temporaries are implicitCons: difficult to rearrange code

April 21, 202316

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 17: September 16, 2014

17

Implementation of Three-Address Stmts: Indirect Triples

# Op Arg1 Arg2

(14) uminus c

(15) * b (14)

(16) uminus c

(17) * b (16)

(18) + (15) (17)

(19) := a (18)

Triple container

Pro: temporaries are implicit & easier to rearrange code

# Stmt

(0) (14)

(1) (15)

(2) (16)

(3) (17)

(4) (18)

(5) (19)

Program

April 21, 202317

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 18: September 16, 2014

18

April 21, 202318

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Got it with following questionsGot it with following questions

• Intermediate Representations – Why? – Machine-independent Opt– Machine-independent Optimization– Machine-independent Checking

• High level IRs– Graphical Representations:– AST: abstract syntax tree– DAG: directed acyclic diagram

• Low-level IRs– Postfix notation (byte-code)– Three address code– Two address code

Page 19: September 16, 2014

19

Thank you very much!

Questions?

April 21, 202319

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction