CSE P 501 Compilers. Instruc7on Selec7on Hal Perkins Winter UW CSE P 501 Winter 2016 N-1

Size: px
Start display at page:

Download "CSE P 501 Compilers. Instruc7on Selec7on Hal Perkins Winter UW CSE P 501 Winter 2016 N-1"

Transcription

1 CSE P 501 Compilers Instruc7on Selec7on Hal Perkins Winter 2016 UW CSE P 501 Winter 2016 N-1

2 Agenda Compiler back- end organiza7on Instruc7on selec7on tree padern matching Credits: Slides by Keith Cooper (Rice); Appel ch. 9; burg/iburg slides by Preston Briggs, CSE 501 Sp09 Burg/iburg paper: Engineering a Simple, Efficient Code Generator, Fraser, Hanson, & Proebs7ng, ACM LOPLAS v1, n3 (Sept. 1992) UW CSE P 501 Winter 2016 N-2

3 Compiler Organiza7on scan parse semantics opt1 opt2 optn instr. select isntr. sched reg. alloc front end middle back end infrastructure symbol tables, trees, graphs, etc UW CSE P 501 Winter 2016 N-3

4 Big Picture Compiler consists of lots of fast stuff followed by hard problems Scanner: O(n) Parser: O(n) Analysis & Op7miza7on: ~ O(n log n) Instruc7on selec7on: fast or NP- Complete Instruc7on scheduling: NP- Complete Register alloca7on: NP- Complete UW CSE P 501 Winter 2016 N-4

5 IR for Code Genera7on Assume a low- level RISC- like IR 3 address, register- register instruc7ons + load/ store r1 <- r2 op r3 Could be tree structure or linear Expose as much detail as possible Assume enough (i.e., ) registers Invent new temporaries for intermediate results Map to actual registers later UW CSE P 501 Winter 2016 N-5

6 Overview: Instruc7on Selec7on Map IR into assembly code Assume known storage layout and code shape i.e., the op7miza7on phases have already done their thing Combine low- level IR opera7ons into machine instruc7ons (take advantage of addressing modes, etc.) UW CSE P 501 Winter 2016 N-6

7 Overview: Instruc7on Scheduling Reorder opera7ons to hide latencies processor func7on units; memory/cache Originally invented for supercomputers (1960s) Now important everywhere Even non- RISC machines, i.e., x86 Even if processor reorders on the fly Assume fixed program UW CSE P 501 Winter 2016 N-7

8 Overview: Register Alloca7on Map values to actual registers Previous phases change need for registers Add code to spill values to temporaries as needed, etc. Usually worth doing another instruc7on scheduling pass aierwards if spill code inserted UW CSE P 501 Winter 2016 N-8

9 How Hard? Instruc7on selec7on Can make locally op7mal choices Global is undoubtedly NP- Complete Instruc7on scheduling Single basic block quick heuris7cs General problem NP Complete Register alloca7on Single basic block, no spilling, interchangeable registers linear General NP Complete UW CSE P 501 Winter 2016 N-9

10 Conven7onal Wisdom We typically lose lidle by solving these independently But not always, of course (itera7ng phases on x86[- 64] can help because of limited registers, memory operands) Instruc7on selec7on Use some form of padern matching virtual registers create as needed Instruc7on scheduling Within a block, list scheduling is close to op7mal Across blocks: EBBs or trace scheduling if list scheduling not good enough Register alloca7on Start with unlimited virtual registers and map enough to K UW CSE P 501 Winter 2016 N-10

11 An Simple Low- Level IR (1) Details not important for our purposes; point is to get a feeling for the level of detail involved This example is from Appel Expressions CONST(i) integer constant i TEMP(t) temporary t (i.e., register) BINOP(op,e1,e2) applica7on of op to e1,e2 MEM(e) contents of memory at address e Means value when used in an expression Means address when used on lei side of assignment CALL(f,args) apply func7on f to argument list args UW CSE P 501 Winter 2016 N-11

12 Simple Low- Level IR (2) Statements MOVE(TEMP t, e) evaluate e and store in temporary t MOVE(MEM(e1), e2) evaluate e1 to yield address a; evaluate e2 and store at a EXP(e) evaluate expressions e and discard result SEQ(s1,s2) execute s1 followed by s2 NAME(n) assembly language label n JUMP(e) jump to e, which can be a NAME label, or more complex (e.g., switch) CJUMP(op,e1,e2,t,f) evaluate e1 op e2; if true jump to label t, otherwise jump to f LABEL(n) defines loca7on of label n in the code UW CSE P 501 Winter 2016 N-12

13 Low- Level IR Example (1) Expr for a local variable at a known offset k from the frame pointer fp Linear MEM(BINOP(PLUS, TEMP fp, CONST k)) Tree MEM + TEMP fp CONST k UW CSE P 501 Winter 2016 N-13

14 Low- Level IR Example (2) For an array element e(k), where each element takes up w storage loca7ons MEM + MEM * e k CONST w UW CSE P 501 Winter 2016 N-14

15 Genera7ng Low- Level IR Assuming ini7al IR is an AST, a simple treewalk can be used to generate the low- level IR Can be done before, during, or aier op7miza7ons in the middle part of the compiler Typically AST is lowered to some lower- level IR, but maybe not final lowest- level one used in instruc7on selec7on Create registers (temporaries) for values and intermediate results Value can be safely allocated to a register when only 1 name can reference it Trouble: pointers, arrays, reference parameters Assign a virtual register to anything that can go into one Generate loads/stores for other values UW CSE P 501 Winter 2016 N-15

16 Instruc7on Selec7on Issues Given the low- level IR, there are many possible code sequences that implement it correctly e.g. to set %rax to 0 on x86, among others movq $0,%rax xorq %rax,%rax subq %rax,%rax imulq %rax,0 Many machine instruc7ons do several things at once e.g., register arithme7c and effec7ve address calcula7on leaq offset(%rbase,%rindex,scale),%rdst UW CSE P 501 Winter 2016 N-16

17 Instruc7on Selec7on Criteria Several possibili7es Fastest Smallest Minimize power consump7on (ex: don t use a func7on unit if leaving it powered- down is a win) Some7mes not obvious e.g., if one of the func7on units in the processor is idle and we can select an instruc7on that uses that unit, it effec7vely executes for free, even if that instruc7on wouldn t be chosen normally (Some interac7on with scheduling here ) UW CSE P 501 Winter 2016 N-17

18 Implementa7on Problem: We need some representa7on of the target machine instruc7on set that facilitates code genera7on Idea: Describe machine instruc7ons using same low- level IR used for program Use padern matching techniques to pick machine instruc7ons that match fragments of the program IR tree Want this to run quickly Would like to automate as much as possible UW CSE P 501 Winter 2016 N-18

19 Matching: How? Tree IR padern match on trees Tree paderns as input Each padern maps to target machine instruc7on (or sequence) and at least one simple target match for each kind of tree node so we can always generate something Various algorithms max. munch, dynamic programming, Linear IR some sort of string matching Strings as input Each string maps to target machine instruc7on sequence Use text matching or peephole matching (parsing!, but with a way, way ambiguous grammar for target machine) Both work well in prac7ce; algorithms are quite different UW CSE P 501 Winter 2016 N-19

20 An Example Target Machine (1) Arithme7c Instruc7ons result in reg. (unnamed) ri TEMP ADD ri <- rj + rk + MUL ri <- rj * rk * SUB and DIV are similar UW CSE P 501 Winter 2016 N-20

21 An Example Target Machine (2) Immediate Instruc7ons ADDI ri <- rj + c + + CONST CONST CONST SUBI ri <- rj - c - CONST UW CSE P 501 Winter 2016 N-21

22 An Example Target Machine (3) Load LOAD ri <- M[rj + c] MEM MEM MEM MEM + + CONST CONST CONST UW CSE P 501 Winter 2016 N-22

23 An Example Target Machine (4) Store not an expression; no result STORE M[rj + c] <- ri MOVE MOVE MOVE MOVE MEM MEM MEM MEM + + CONST CONST CONST UW CSE P 501 Winter 2016 N-23

24 An Example Target Machine (5) mem- >mem copy also not an expression MOVEM M[rj] <- M[ri] MOVE MEM MEM UW CSE P 501 Winter 2016 N-24

25 Tree PaDern Matching (1) Goal: Tile the low- level tree with opera7on (instruc7on) trees A!ling is a collec7on of <node,op> pairs node is a node in the tree op is an opera7on tree <node,op> means that op could implement the subtree at node UW CSE P 501 Winter 2016 N-25

26 Tree PaDern Matching (2) A 7ling implements a tree if it covers every node in the tree and the overlap between any two 7les (trees) is limited to a single node If <node,op> is in the 7ling, then node is also covered by a leaf in another opera7on tree in the 7ling unless it is the root Where two opera7on trees meet, they must be compa7ble (i.e., expect the same value in the same loca7on) UW CSE P 501 Winter 2016 N-26

27 Example Tree for a[i]:=x MOVE MEM MEM + + MEM + TEMP i * CONST 4 FP CONST x FP CONST a UW CSE P 501 Winter 2016 N-27

28 Genera7ng Code Given a 7led tree, to generate code Postorder treewalk; node- dependant order for children Emit code sequences corresponding to 7les in order Connect 7les by using same register name to 7e boundaries together UW CSE P 501 Winter 2016 N-28

29 Tiling Algorithms (1) Maximal Munch Start at root of tree, find largest 7le that fits. Cover the root node and possibly other nearby nodes. Then repeat for each subtree Generate instruc7on as each 7le is placed Generates instruc7ons in reverse order Generates an op7mum 7ling 7les sum to lowest possible cost But not op7mal there may be another 7ling where two adjacent 7les can be combined into one of lower cost UW CSE P 501 Winter 2016 N-29

30 Tiling Algorithms (2) Dynamic Programming There may be many 7les that could match at a par7cular node Idea: Walk the tree and accumulate the set of all possible 7les that could match at that point Tiles(n) Then: Select minimal cost for subtrees (bodom up), and go top- down to select and emit lowest- cost instruc7ons UW CSE P 501 Winter 2016 N-30

31 Tile(Node n) Tiles(n) <- empty; if n has two children then Tile(lei child of n) Tile(right child of n) for each rule r that implements n if (lei(r) is in Tiles(lei(n)) and right(r) is in Tiles(right(n))) Tiles(n) <- Tiles(n) + r else if n has one child then Tile(child of n) for each rule r that implements n if(lei(r) is in Tiles(child(n))) Tiles(n) <- Tiles(n) + r else /* n is a leaf */ Tiles(n) <- { all rules that implement n } UW CSE P 501 Winter 2016 N-31

32 Tools iburg and burg and others use a combina7on of dynamic programming and tree padern matching to find op7mal transla7ons Product of years of research going back to peephole op7mizers Not really a research area now (like parsing), but s7ll room for newer/beder tools UW CSE P 501 Winter 2016 N-32

33 Peephole Op7miza7on Idea: Find pairs of instruc7ons (not necessarily adjacent) and replace them with something beder Instead of use t2 = &c t3 = *t2 t3 = c UW CSE P 501 Winter 2016 N-33

34 Which Pairs? Chris Fraser no7ced that useful pairs were connected by UD chains, so Plan: consider each instruc7on together with instruc7ons that feed it UD chains reach across blocks, so instruc7on selector can work globally Works great with SSA too UW CSE P 501 Winter 2016 N-34

35 PaDerns Reduce pairs of instruc7ons to schema7cs t5 = 4 t6 = t4 + t5 becomes %reg1 = %con %reg3 = %reg2 + %reg1 Find in hash table; if found, replace %reg3 = %reg2 + %con UW CSE P 501 Winter 2016 N-35

36 Tree- Based Representa7on The tree makes the UD chains explicit Each defini7on in the tree is used once Typically a basic block would have a sequence of expression trees UW CSE P 501 Winter 2016 N-36

37 Example Code for i = c + 4 [c a char; i an int] t1 = &i t2 = &c t3 = *t2 t4 = cvci(t3) t5 = 4 t6 = t4+t5 *t1 = t6 = &i + c2i ld &c 4 UW CSE P 501 Winter 2016 N-37

38 Tree PaDerns An iburg spec is a set of rules. BNF: rule = nonterm : tree = integer (cost) tree = term (tree, tree) term (tree) term nonterm Terminals are IL opera7ons Nonterminals name sets of rules UW CSE P 501 Winter 2016 N-38

39 Rules Rules are numbered to the right of the = sign The cost of a rule is its cost (oien 0) plus the cost of any subtrees A rule may be nested to define a padern that matches more than one level in a tree UW CSE P 501 Winter 2016 N-39

40 Example stmt : ASSIGN(addr, reg) = 1 (1) stmt : reg = 2 (0) reg : ADD(reg, rc) = 3 (1) reg : ADD(rc, reg) = 4 (1) reg : LD(addr) = 5 (1) reg : C2I(LD(addr)) = 6 (1) reg : addr = 7 (1) reg : con = 8 (1) addr : ADD(reg, con) = 9 (0) addr : ADD(con, reg) = 10 (0) addr : ADDRLP = 11 (0) // addr of local var rc : con = 12 (0) rc : reg = 13 (0) con : CNST = 14 (0) UW CSE P 501 Winter 2016 N-40

41 Algorithm Pass I: bodom up Label each node with lowest cost rule to produce result from available operands (cost = cost of rule + cost of subtrees) Label is: (r, c) = best is rule r, cost is c Pass II: top down Find cheapest node that generates result needed by parent tree Emit instruc7ons in reverse order as choices are made UW CSE P 501 Winter 2016 N-41

42 BoDom- up (Labeling) op stmt reg addr rc con a a = stmt : ASSIGN(addr, reg) = 1 (1) stmt : reg = 2 (0) reg : ADD(reg, rc) = 3 (1) reg : ADD(rc, reg) = 4 (1) reg : LD(addr) = 5 (1) reg : C2I(LD(addr)) = 6 (1) reg : addr = 7 (1) reg : con = 8 (1) addr : ADD(reg, con) = 9 (0) addr : ADD(con, reg) = 10 (0) addr : ADDRLP = 11 (0) rc : con = 12 (0) rc : reg = 13 (0) con : CNST = 14 (0) b c b c &i + d e d c2i e 4 f g f ld g &c UW CSE P 501 Winter 2016 N-42

43 Top- Down (Reduc7on) op stmt reg addr rc con a a (1,3) = stmt : ASSIGN(addr, reg) = 1 (1) stmt : reg = 2 (0) reg : ADD(reg, rc) = 3 (1) reg : ADD(rc, reg) = 4 (1) reg : LD(addr) = 5 (1) reg : C2I(LD(addr)) = 6 (1) reg : addr = 7 (1) reg : con = 8 (1) addr : ADD(reg, con) = 9 (0) addr : ADD(con, reg) = 10 (0) addr : ADDRLP = 11 (0) rc : con = 12 (0) rc : reg = 13 (0) con : CNST = 14 (0) b (2,1) (7,1) (11,0) (13,1) c (2,2) (3,2) (9,1) (13,2) b c &i + d (2,1) (6,1) (13,1) e (2,1) (8,1) (12,0) (14,0) d c2i e 4 f (2,1) (5,1) (13,1) g (2,1) (7,1) (11,0) (13,1) f ld g &c UW CSE P 501 Winter 2016 N-43

44 Coming ADrac7ons Instruc7on Scheduling Register Alloca7on And more. UW CSE P 501 Winter 2016 N-44

Agenda. CSE P 501 Compilers. Big Picture. Compiler Organization. Intermediate Representations. IR for Code Generation. CSE P 501 Au05 N-1

Agenda. CSE P 501 Compilers. Big Picture. Compiler Organization. Intermediate Representations. IR for Code Generation. CSE P 501 Au05 N-1 Agenda CSE P 501 Compilers Instruction Selection Hal Perkins Autumn 2005 Compiler back-end organization Low-level intermediate representations Trees Linear Instruction selection algorithms Tree pattern

More information

Instruction Selection, II Tree-pattern matching

Instruction Selection, II Tree-pattern matching Instruction Selection, II Tree-pattern matching Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 4 at Rice University have explicit permission

More information

CS 406/534 Compiler Construction Putting It All Together

CS 406/534 Compiler Construction Putting It All Together CS 406/534 Compiler Construction Putting It All Together Prof. Li Xu Dept. of Computer Science UMass Lowell Fall 2004 Part of the course lecture notes are based on Prof. Keith Cooper, Prof. Ken Kennedy

More information

Low-level optimization

Low-level optimization Low-level optimization Advanced Course on Compilers Spring 2015 (III-V): Lecture 6 Vesa Hirvisalo ESG/CSE/Aalto Today Introduction to code generation finding the best translation Instruction selection

More information

Lecture 12: Compiler Backend

Lecture 12: Compiler Backend CS 515 Programming Language and Compilers I Lecture 1: Compiler Backend (The lectures are based on the slides copyrighted by Keith Cooper and Linda Torczon from Rice University.) Zheng (Eddy) Zhang Rutgers

More information

CSE 401/M501 Compilers

CSE 401/M501 Compilers CSE 401/M501 Compilers Code Shape I Basic Constructs Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 K-1 Administrivia Semantics/type check due next Thur. 11/15 How s it going? Be sure to (re-)read

More information

CS415 Compilers. Intermediate Represeation & Code Generation

CS415 Compilers. Intermediate Represeation & Code Generation CS415 Compilers Intermediate Represeation & Code Generation These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University Review - Types of Intermediate Representations

More information

CSE 504: Compiler Design. Instruction Selection

CSE 504: Compiler Design. Instruction Selection Instruction Selection Pradipta De pradipta.de@sunykorea.ac.kr Current Topic Instruction Selection techniques Tree Walk Tiling based approach Peephole Optimization Instruction Selection Difficulty of Instruction

More information

Topic 6 Basic Back-End Optimization

Topic 6 Basic Back-End Optimization Topic 6 Basic Back-End Optimization Instruction Selection Instruction scheduling Register allocation 2008/4/8 \course\cpeg421-08s\topic-6.ppt 1 ABET Outcome Ability to apply knowledge of basic code generation

More information

Instruction Selection: Preliminaries. Comp 412

Instruction Selection: Preliminaries. Comp 412 COMP 412 FALL 2017 Instruction Selection: Preliminaries Comp 412 source code Front End Optimizer Back End target code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled

More information

Itree Stmts and Exprs. Back-End Code Generation. Summary: IR -> Machine Code. Side-Effects

Itree Stmts and Exprs. Back-End Code Generation. Summary: IR -> Machine Code. Side-Effects Back-End Code Generation Given a list of itree fragments, how to generate the corresponding assembly code? datatype frag = PROC of {name : Tree.label, function name body : Tree.stm, function body itree

More information

Ways to implement a language

Ways to implement a language Interpreters Implemen+ng PLs Most of the course is learning fundamental concepts for using PLs Syntax vs. seman+cs vs. idioms Powerful constructs like closures, first- class objects, iterators (streams),

More information

Instruction Selection: Peephole Matching. Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved.

Instruction Selection: Peephole Matching. Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Instruction Selection: Peephole Matching Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. The Problem Writing a compiler is a lot of work Would like to reuse components

More information

Where we are. Instruction selection. Abstract Assembly. CS 4120 Introduction to Compilers

Where we are. Instruction selection. Abstract Assembly. CS 4120 Introduction to Compilers Where we are CS 420 Introduction to Compilers Andrew Myers Cornell University Lecture 8: Instruction Selection 5 Oct 20 Intermediate code Canonical intermediate code Abstract assembly code Assembly code

More information

Intermediate Code Generation

Intermediate Code Generation Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target

More information

Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #7. Warehouse Scale Computer

Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13. Fall Lecture #7. Warehouse Scale Computer CS 61C: Great Ideas in Computer Architecture Everything is a Number Instructor: Randy H. Katz hap://inst.eecs.berkeley.edu/~cs61c/fa13 9/19/13 Fall 2013 - - Lecture #7 1 New- School Machine Structures

More information

Where we are. What makes a good IR? Intermediate Code. CS 4120 Introduction to Compilers

Where we are. What makes a good IR? Intermediate Code. CS 4120 Introduction to Compilers Where we are CS 4120 Introduction to Compilers Andrew Myers Cornell University Lecture 13: Intermediate Code 25 Sep 09 Source code (character stream) Token stream Abstract syntax tree Abstract syntax tree

More information

Introduction to Optimization, Instruction Selection and Scheduling, and Register Allocation

Introduction to Optimization, Instruction Selection and Scheduling, and Register Allocation Introduction to Optimization, Instruction Selection and Scheduling, and Register Allocation Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Traditional Three-pass Compiler

More information

Compiler Optimization Intermediate Representation

Compiler Optimization Intermediate Representation Compiler Optimization Intermediate Representation Virendra Singh Associate Professor Computer Architecture and Dependable Systems Lab Department of Electrical Engineering Indian Institute of Technology

More information

CSE P 501 Compilers. Intermediate Representations Hal Perkins Spring UW CSE P 501 Spring 2018 G-1

CSE P 501 Compilers. Intermediate Representations Hal Perkins Spring UW CSE P 501 Spring 2018 G-1 CSE P 501 Compilers Intermediate Representations Hal Perkins Spring 2018 UW CSE P 501 Spring 2018 G-1 Administrivia Semantics/types/symbol table project due ~2 weeks how goes it? Should be caught up on

More information

CSE 401/M501 Compilers

CSE 401/M501 Compilers CSE 401/M501 Compilers Intermediate Representations Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 G-1 Agenda Survey of Intermediate Representations Graphical Concrete/Abstract Syntax Trees (ASTs)

More information

CS 406/534 Compiler Construction Instruction Selection and Global Register Allocation

CS 406/534 Compiler Construction Instruction Selection and Global Register Allocation CS 406/534 Compiler Construction Instruction Selection and Global Register Allocation Prof. Li Xu Dept. of Computer Science UMass Lowell Fall 2004 Part of the course lecture notes are based on Prof. Keith

More information

Code Genera*on for Control Flow Constructs

Code Genera*on for Control Flow Constructs Code Genera*on for Control Flow Constructs 1 Roadmap Last *me: Got the basics of MIPS CodeGen for some AST node types This *me: Do the rest of the AST nodes Introduce control flow graphs Scanner Parser

More information

CS5363 Final Review. cs5363 1

CS5363 Final Review. cs5363 1 CS5363 Final Review cs5363 1 Programming language implementation Programming languages Tools for describing data and algorithms Instructing machines what to do Communicate between computers and programmers

More information

CS 61C: Great Ideas in Computer Architecture Func%ons and Numbers

CS 61C: Great Ideas in Computer Architecture Func%ons and Numbers CS 61C: Great Ideas in Computer Architecture Func%ons and Numbers 9/11/12 Instructor: Krste Asanovic, Randy H. Katz hcp://inst.eecs.berkeley.edu/~cs61c/sp12 Fall 2012 - - Lecture #8 1 New- School Machine

More information

CS 61C: Great Ideas in Computer Architecture. MIPS Instruc,on Representa,on II. Dan Garcia

CS 61C: Great Ideas in Computer Architecture. MIPS Instruc,on Representa,on II. Dan Garcia CS 61C: Great Ideas in Computer Architecture MIPS Instruc,on Representa,on II Dan Garcia 1 Review of Last Lecture Simplifying MIPS: Define instruc?ons to be same size as data word (one word) so that they

More information

CSE 401/M501 Compilers

CSE 401/M501 Compilers CSE 401/M501 Compilers Code Shape II Objects & Classes Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 L-1 Administrivia Semantics/type check due next Thur. 11/15 How s it going? Reminder: if you want

More information

CSE 401 Compilers. Code Shape I Basic Constructs Hal Perkins Winter UW CSE 401 Winter 2015 K-1

CSE 401 Compilers. Code Shape I Basic Constructs Hal Perkins Winter UW CSE 401 Winter 2015 K-1 CSE 401 Compilers Code Shape I Basic Constructs Hal Perkins Winter 2015 UW CSE 401 Winter 2015 K-1 Administrivia SemanBcs/type check due tomorrow night How s it going How to catch scanner errors in jflex

More information

Instruction Selection and Scheduling

Instruction Selection and Scheduling Instruction Selection and Scheduling The Problem Writing a compiler is a lot of work Would like to reuse components whenever possible Would like to automate construction of components Front End Middle

More information

We ve written these as a grammar, but the grammar also stands for an abstract syntax tree representation of the IR.

We ve written these as a grammar, but the grammar also stands for an abstract syntax tree representation of the IR. CS 4120 Lecture 14 Syntax-directed translation 26 September 2011 Lecturer: Andrew Myers We want to translate from a high-level programming into an intermediate representation (IR). This lecture introduces

More information

: Advanced Compiler Design. 8.0 Instruc?on scheduling

: Advanced Compiler Design. 8.0 Instruc?on scheduling 6-80: Advanced Compiler Design 8.0 Instruc?on scheduling Thomas R. Gross Computer Science Department ETH Zurich, Switzerland Overview 8. Instruc?on scheduling basics 8. Scheduling for ILP processors 8.

More information

Compilers and Code Optimization EDOARDO FUSELLA

Compilers and Code Optimization EDOARDO FUSELLA Compilers and Code Optimization EDOARDO FUSELLA Contents Data memory layout Instruction selection Register allocation Data memory layout Memory Hierarchy Capacity vs access speed Main memory Classes of

More information

Intermediate Representations

Intermediate Representations COMP 506 Rice University Spring 2018 Intermediate Representations source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students

More information

CS 61C: Great Ideas in Computer Architecture Strings and Func.ons. Anything can be represented as a number, i.e., data or instruc\ons

CS 61C: Great Ideas in Computer Architecture Strings and Func.ons. Anything can be represented as a number, i.e., data or instruc\ons CS 61C: Great Ideas in Computer Architecture Strings and Func.ons Instructor: Krste Asanovic, Randy H. Katz hdp://inst.eecs.berkeley.edu/~cs61c/sp12 Fall 2012 - - Lecture #7 1 New- School Machine Structures

More information

Register Alloca.on Deconstructed. David Ryan Koes Seth Copen Goldstein

Register Alloca.on Deconstructed. David Ryan Koes Seth Copen Goldstein Register Alloca.on Deconstructed David Ryan Koes Seth Copen Goldstein 12th Interna+onal Workshop on So3ware and Compilers for Embedded Systems April 24, 12009 Register Alloca:on Problem unbounded number

More information

CSE P 501 Compilers. Register Allocation Hal Perkins Autumn /22/ Hal Perkins & UW CSE P-1

CSE P 501 Compilers. Register Allocation Hal Perkins Autumn /22/ Hal Perkins & UW CSE P-1 CSE P 501 Compilers Register Allocation Hal Perkins Autumn 2011 11/22/2011 2002-11 Hal Perkins & UW CSE P-1 Agenda Register allocation constraints Local methods Faster compile, slower code, but good enough

More information

CSE P 501 Compilers. Parsing & Context-Free Grammars Hal Perkins Winter /15/ Hal Perkins & UW CSE C-1

CSE P 501 Compilers. Parsing & Context-Free Grammars Hal Perkins Winter /15/ Hal Perkins & UW CSE C-1 CSE P 501 Compilers Parsing & Context-Free Grammars Hal Perkins Winter 2008 1/15/2008 2002-08 Hal Perkins & UW CSE C-1 Agenda for Today Parsing overview Context free grammars Ambiguous grammars Reading:

More information

7 Translation to Intermediate Code

7 Translation to Intermediate Code 7 Translation to Intermediate Code ( 7. Translation to Intermediate Code, p. 150) This chpater marks the transition from the source program analysis phase to the target program synthesis phase. All static

More information

2012 David Black- Schaffer 1

2012 David Black- Schaffer 1 1 Instruc*on Set Architectures 2 Introduc

More information

Intermediate Code Generation (ICG)

Intermediate Code Generation (ICG) Intermediate Code Generation (ICG) Transform AST to lower-level intermediate representation Basic Goals: Separation of Concerns Generate efficient code sequences for individual operations Keep it fast

More information

High-Level Synthesis Creating Custom Circuits from High-Level Code

High-Level Synthesis Creating Custom Circuits from High-Level Code High-Level Synthesis Creating Custom Circuits from High-Level Code Hao Zheng Comp Sci & Eng University of South Florida Exis%ng Design Flow Register-transfer (RT) synthesis - Specify RT structure (muxes,

More information

CSE 401/M501 Compilers

CSE 401/M501 Compilers CSE 401/M501 Compilers x86-64, Running MiniJava, Basic Code Generation and Bootstrapping Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 M-1 Running MiniJava Programs To run a MiniJava program Space

More information

Tree Parsing. $Revision: 1.4 $

Tree Parsing. $Revision: 1.4 $ Tree Parsing $Revision: 1.4 $ Compiler Tools Group Department of Electrical and Computer Engineering University of Colorado Boulder, CO, USA 80309-0425 i Table of Contents 1 The Tree To Be Parsed.........................

More information

CSE 401/M501 Compilers

CSE 401/M501 Compilers CSE 401/M501 Compilers ASTs, Modularity, and the Visitor Pattern Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 H-1 Agenda Today: AST operations: modularity and encapsulation Visitor pattern: basic

More information

Outline. Register Allocation. Issues. Storing values between defs and uses. Issues. Issues P3 / 2006

Outline. Register Allocation. Issues. Storing values between defs and uses. Issues. Issues P3 / 2006 P3 / 2006 Register Allocation What is register allocation Spilling More Variations and Optimizations Kostis Sagonas 2 Spring 2006 Storing values between defs and uses Program computes with values value

More information

Code Shape II Expressions & Assignment

Code Shape II Expressions & Assignment Code Shape II Expressions & Assignment Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit permission to make

More information

CSE 582 Autumn 2002 Exam 11/26/02

CSE 582 Autumn 2002 Exam 11/26/02 Name There are 8 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. You may refer to the following reference materials:

More information

Instruction Selection. Problems. DAG Tiling. Pentium ISA. Example Tiling CS412/CS413. Introduction to Compilers Tim Teitelbaum

Instruction Selection. Problems. DAG Tiling. Pentium ISA. Example Tiling CS412/CS413. Introduction to Compilers Tim Teitelbaum Instruction Selection CS42/CS43 Introduction to Compilers Tim Teitelbaum Lecture 32: More Instruction Selection 20 Apr 05. Translate low-level IR code into DAG representation 2. Then find a good tiling

More information

CSE P 501 Compilers. Parsing & Context-Free Grammars Hal Perkins Spring UW CSE P 501 Spring 2018 C-1

CSE P 501 Compilers. Parsing & Context-Free Grammars Hal Perkins Spring UW CSE P 501 Spring 2018 C-1 CSE P 501 Compilers Parsing & Context-Free Grammars Hal Perkins Spring 2018 UW CSE P 501 Spring 2018 C-1 Administrivia Project partner signup: please find a partner and fill out the signup form by noon

More information

The structure of a compiler

The structure of a compiler The structure of a compiler O(n) A compiler is a lot of fast stuff followed by hard problems scanning parsing intermediate code generation Polynomial time Code optimization: local dataflow, global dataflow,

More information

CSc 453. Code Generation I Christian Collberg. Compiler Phases. Code Generation Issues. Slide Compilers and Systems Software.

CSc 453. Code Generation I Christian Collberg. Compiler Phases. Code Generation Issues. Slide Compilers and Systems Software. Slide 16 2 Lexing, Parsing Semantic Analysis, Intermediate Code Generation Peephole Optimization Assembly Code Assembler Machine Code Register Allocation Intermediate Code Selection Scheduling Register

More information

An Overview of Compilation

An Overview of Compilation An Overview of Compilation (www.cse.iitb.ac.in/ uday) Department of Computer Science and Engineering, Indian Institute of Technology, Bombay January 2014 cs306 Compilation Overview: Outline 1/18 Outline

More information

CSE Lecture In Class Example Handout

CSE Lecture In Class Example Handout CSE 30321 Lecture 07-09 In Class Example Handout Part A: A Simple, MIPS-based Procedure: Swap Procedure Example: Let s write the MIPS code for the following statement (and function call): if (A[i] > A

More information

CSE Compilers. Reminders/ Announcements. Lecture 15: Seman9c Analysis, Part III Michael Ringenburg Winter 2013

CSE Compilers. Reminders/ Announcements. Lecture 15: Seman9c Analysis, Part III Michael Ringenburg Winter 2013 CSE 401 - Compilers Lecture 15: Seman9c Analysis, Part III Michael Ringenburg Winter 2013 Winter 2013 UW CSE 401 (Michael Ringenburg) Reminders/ Announcements Project Part 2 due Wednesday Midterm Friday

More information

Compilers CS S-08 Code Generation

Compilers CS S-08 Code Generation Compilers CS414-2017S-08 Code Generation David Galles Department of Computer Science University of San Francisco 08-0: Code Generation Next Step: Create actual assembly code. Use a tree tiling strategy:

More information

CMPT 379 Compilers. Parse trees

CMPT 379 Compilers. Parse trees CMPT 379 Compilers Anoop Sarkar http://www.cs.sfu.ca/~anoop 10/25/07 1 Parse trees Given an input program, we convert the text into a parse tree Moving to the backend of the compiler: we will produce intermediate

More information

What Compilers Can and Cannot Do. Saman Amarasinghe Fall 2009

What Compilers Can and Cannot Do. Saman Amarasinghe Fall 2009 What Compilers Can and Cannot Do Saman Amarasinghe Fall 009 Optimization Continuum Many examples across the compilation pipeline Static Dynamic Program Compiler Linker Loader Runtime System Optimization

More information

Lecture 1 Introduc-on

Lecture 1 Introduc-on Lecture 1 Introduc-on What would you get out of this course? Structure of a Compiler Op9miza9on Example 15-745: Introduc9on 1 What Do Compilers Do? 1. Translate one language into another e.g., convert

More information

CSE P 501 Compilers. Static Semantics Hal Perkins Winter /22/ Hal Perkins & UW CSE I-1

CSE P 501 Compilers. Static Semantics Hal Perkins Winter /22/ Hal Perkins & UW CSE I-1 CSE P 501 Compilers Static Semantics Hal Perkins Winter 2008 1/22/2008 2002-08 Hal Perkins & UW CSE I-1 Agenda Static semantics Types Attribute grammars Representing types Symbol tables Note: this covers

More information

Compiler construction in4303 lecture 9

Compiler construction in4303 lecture 9 Compiler construction in4303 lecture 9 Code generation Chapter 4.2.5, 4.2.7, 4.2.11 4.3 Overview Code generation for basic blocks instruction selection:[burs] register allocation: graph coloring instruction

More information

Introduction. CSc 453. Compilers and Systems Software. 19 : Code Generation I. Department of Computer Science University of Arizona.

Introduction. CSc 453. Compilers and Systems Software. 19 : Code Generation I. Department of Computer Science University of Arizona. CSc 453 Compilers and Systems Software 19 : Code Generation I Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2009 Christian Collberg Compiler Phases Optimize

More information

Compiler Design Spring 2018

Compiler Design Spring 2018 Compiler Design Spring 2018 2.3 Templates (for code generation) 2.4 Template-based code generator Thomas R. Gross Computer Science Department ETH Zurich, Switzerland 26 2.3 Templates Templates decide how

More information

Administration. Where we are. Canonical form. Canonical form. One SEQ node. CS 412 Introduction to Compilers

Administration. Where we are. Canonical form. Canonical form. One SEQ node. CS 412 Introduction to Compilers Administration CS 412 Introduction to Compilers Andrew Myers Cornell University Lecture 15: Canonical IR 26 Feb 01 HW3 due Friday Prelim 1 next Tuesday evening (7:30-9:30PM) location TBA covers topics

More information

CS 61C: Great Ideas in Computer Architecture Direct- Mapped Caches. Increasing distance from processor, decreasing speed.

CS 61C: Great Ideas in Computer Architecture Direct- Mapped Caches. Increasing distance from processor, decreasing speed. CS 6C: Great Ideas in Computer Architecture Direct- Mapped s 9/27/2 Instructors: Krste Asanovic, Randy H Katz hdp://insteecsberkeleyedu/~cs6c/fa2 Fall 2 - - Lecture #4 New- School Machine Structures (It

More information

Compilers. Intermediate representations and code generation. Yannis Smaragdakis, U. Athens (original slides by Sam

Compilers. Intermediate representations and code generation. Yannis Smaragdakis, U. Athens (original slides by Sam Compilers Intermediate representations and code generation Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts) Today Intermediate representations and code generation Scanner Parser Semantic

More information

Compiler Optimization Techniques

Compiler Optimization Techniques Compiler Optimization Techniques Department of Computer Science, Faculty of ICT February 5, 2014 Introduction Code optimisations usually involve the replacement (transformation) of code from one sequence

More information

Advanced C Programming

Advanced C Programming Advanced C Programming Compilers Sebastian Hack hack@cs.uni-sb.de Christoph Weidenbach weidenbach@mpi-inf.mpg.de 20.01.2009 saarland university computer science 1 Contents Overview Optimizations Program

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 10! Con:nua:on of the course Syntax- Directed Transla:on

More information

Compiler: Control Flow Optimization

Compiler: Control Flow Optimization Compiler: Control Flow Optimization Virendra Singh Computer Architecture and Dependable Systems Lab Department of Electrical Engineering Indian Institute of Technology Bombay http://www.ee.iitb.ac.in/~viren/

More information

Op#miza#on Problems, John Gu7ag MIT Department of Electrical Engineering and Computer Science LECTURE 2 1

Op#miza#on Problems, John Gu7ag MIT Department of Electrical Engineering and Computer Science LECTURE 2 1 Op#miza#on Problems, John Gu7ag MIT Department of Electrical Engineering and Computer Science 6.0002 LECTURE 2 1 Relevant Reading for Today s Lecture Chapter 13 6.0002 LECTURE 2 2 The Pros and Cons of

More information

CSE 12 Abstract Syntax Trees

CSE 12 Abstract Syntax Trees CSE 12 Abstract Syntax Trees Compilers and Interpreters Parse Trees and Abstract Syntax Trees (AST's) Creating and Evaluating AST's The Table ADT and Symbol Tables 16 Using Algorithms and Data Structures

More information

Compiler Code Generation COMP360

Compiler Code Generation COMP360 Compiler Code Generation COMP360 Students who acquire large debts putting themselves through school are unlikely to think about changing society. When you trap people in a system of debt, they can t afford

More information

Summary: Direct Code Generation

Summary: Direct Code Generation Summary: Direct Code Generation 1 Direct Code Generation Code generation involves the generation of the target representation (object code) from the annotated parse tree (or Abstract Syntactic Tree, AST)

More information

A Simple Syntax-Directed Translator

A Simple Syntax-Directed Translator Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called

More information

Intermediate Representations

Intermediate Representations Intermediate Representations Where In The Course Are We? Rest of the course: compiler writer needs to choose among alternatives Choices affect the quality of compiled code time to compile There may be

More information

Register Allocation. Introduction Local Register Allocators

Register Allocation. Introduction Local Register Allocators Register Allocation Introduction Local Register Allocators Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit

More information

Principles of Compiler Design

Principles of Compiler Design Principles of Compiler Design Intermediate Representation Compiler Lexical Analysis Syntax Analysis Semantic Analysis Source Program Token stream Abstract Syntax tree Unambiguous Program representation

More information

A Func'onal Space Model

A Func'onal Space Model A Func'onal Space Model COS 26 David Walker Princeton University slides copyright 2017 David Walker permission granted to reuse these slides for non-commercial educa'onal purposes 2 Because Halloween draws

More information

CSE P 501 Compilers. Implementing ASTs (in Java) Hal Perkins Autumn /20/ Hal Perkins & UW CSE H-1

CSE P 501 Compilers. Implementing ASTs (in Java) Hal Perkins Autumn /20/ Hal Perkins & UW CSE H-1 CSE P 501 Compilers Implementing ASTs (in Java) Hal Perkins Autumn 2009 10/20/2009 2002-09 Hal Perkins & UW CSE H-1 Agenda Representing ASTs as Java objects Parser actions Operations on ASTs Modularity

More information

Data Representa/ons: IA32 + x86-64

Data Representa/ons: IA32 + x86-64 X86-64 Instruc/on Set Architecture Instructor: Sanjeev Se(a 1 Data Representa/ons: IA32 + x86-64 Sizes of C Objects (in Bytes) C Data Type Typical 32- bit Intel IA32 x86-64 unsigned 4 4 4 int 4 4 4 long

More information

CSE Lecture In Class Example Handout

CSE Lecture In Class Example Handout CSE 30321 Lecture 07-08 In Class Example Handout Part A: J-Type Example: If you look in your book at the syntax for j (an unconditional jump instruction), you see something like: e.g. j addr would seemingly

More information

Translation to Intermediate Code. Chapter 7

Translation to Intermediate Code. Chapter 7 Translation to Intermediate Code Chapter 7 1 Introduction The front end of a compiler parses the input program and creates Abstract Syntax Tree The back end is responsible to create Machine Code It is

More information

What is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done

What is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g., C++) to low-level assembly language that can be executed by hardware int a,

More information

Code Generation. Dragon: Ch (Just part of it) Holub: Ch 6.

Code Generation. Dragon: Ch (Just part of it) Holub: Ch 6. Code Generation Dragon: Ch 7. 8. (Just part of it) Holub: Ch 6. Compilation Processes Again Choice of Intermediate Code Representation (IR) IR examples Parse tree Three address code (e.g., x := y op z)

More information

Principles of Programming Languages

Principles of Programming Languages Principles of Programming Languages h"p://www.di.unipi.it/~andrea/dida2ca/plp- 14/ Prof. Andrea Corradini Department of Computer Science, Pisa Lesson 11! Syntax- Directed Transla>on The Structure of the

More information

NAMES, SCOPES AND BINDING A REVIEW OF THE CONCEPTS

NAMES, SCOPES AND BINDING A REVIEW OF THE CONCEPTS NAMES, SCOPES AND BINDING A REVIEW OF THE CONCEPTS Name Binding and Binding Time Name binding is the associa1on of objects (data and/or code) with names (iden1fiers) Shape S = new Shape(); The binding

More information

Research opportuni/es with me

Research opportuni/es with me Research opportuni/es with me Independent study for credit - Build PL tools (parsers, editors) e.g., JDial - Build educa/on tools (e.g., Automata Tutor) - Automata theory problems e.g., AutomatArk - Research

More information

Machine- Level Representa2on: Procedure

Machine- Level Representa2on: Procedure Machine- Level Representa2on: Procedure CSCI 2021: Machine Architecture and Organiza2on Pen- Chung Yew Department Computer Science and Engineering University of Minnesota With Slides from Bryant, O Hallaron

More information

Course Administration

Course Administration Fall 2018 EE 3613: Computer Organization Chapter 2: Instruction Set Architecture Introduction 4/4 Avinash Karanth Department of Electrical Engineering & Computer Science Ohio University, Athens, Ohio 45701

More information

UNIT V: CENTRAL PROCESSING UNIT

UNIT V: CENTRAL PROCESSING UNIT UNIT V: CENTRAL PROCESSING UNIT Agenda Basic Instruc1on Cycle & Sets Addressing Instruc1on Format Processor Organiza1on Register Organiza1on Pipeline Processors Instruc1on Pipelining Co-Processors RISC

More information

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent

More information

Static Semantics. Winter /3/ Hal Perkins & UW CSE I-1

Static Semantics. Winter /3/ Hal Perkins & UW CSE I-1 CSE 401 Compilers Static Semantics Hal Perkins Winter 2009 2/3/2009 2002-09 Hal Perkins & UW CSE I-1 Agenda Static semantics Types Symbol tables General ideas for now; details later for MiniJava project

More information

CSE P 501 Compilers. Implementing ASTs (in Java) Hal Perkins Winter /22/ Hal Perkins & UW CSE H-1

CSE P 501 Compilers. Implementing ASTs (in Java) Hal Perkins Winter /22/ Hal Perkins & UW CSE H-1 CSE P 501 Compilers Implementing ASTs (in Java) Hal Perkins Winter 2008 1/22/2008 2002-08 Hal Perkins & UW CSE H-1 Agenda Representing ASTs as Java objects Parser actions Operations on ASTs Modularity

More information

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1 Defining Program Syntax Chapter Two Modern Programming Languages, 2nd ed. 1 Syntax And Semantics Programming language syntax: how programs look, their form and structure Syntax is defined using a kind

More information

Final CSE 131 Winter 2010

Final CSE 131 Winter 2010 Student ID Login Name Name Signature _ Final CSE 131 Winter 2010 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 Page 9 Page 10 Page 11 _ (26 points) _ (15 points) _ (36 points) _ (25 points) _

More information

Code generation for modern processors

Code generation for modern processors Code generation for modern processors Definitions (1 of 2) What are the dominant performance issues for a superscalar RISC processor? Refs: AS&U, Chapter 9 + Notes. Optional: Muchnick, 16.3 & 17.1 Instruction

More information

Chapter 2 A Quick Tour

Chapter 2 A Quick Tour Chapter 2 A Quick Tour 2.1 The Compiler Toolchain A compiler is one component in a toolchain of programs used to create executables from source code. Typically, when you invoke a single command to compile

More information

Code generation for modern processors

Code generation for modern processors Code generation for modern processors What are the dominant performance issues for a superscalar RISC processor? Refs: AS&U, Chapter 9 + Notes. Optional: Muchnick, 16.3 & 17.1 Strategy il il il il asm

More information

Architectures. Code Generation Issues III. Code Generation Issues II. Machine Architectures I

Architectures. Code Generation Issues III. Code Generation Issues II. Machine Architectures I CSc 553 Principles of Compilation 7 : Code Generation I Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2011 Christian Collberg Lexing, Parsing Semantic

More information