Winter Compiler Construction T9 IR part 2 + Runtime organization. Announcements. Today. Know thy group s code
|
|
- Mitchell Rafe Singleton
- 6 years ago
- Views:
Transcription
1 Winter Compiler Construction T9 IR part 2 + Runtime organization Mool Sagiv and Roman Manevich School of Computer Science Tel-Aviv Universit Announcements What is epected in PA3 documentation (5 pts) Testing strateg: lists of tests and what the check (scope rules, tpe rules etc.) How did ou conduct the semantic analsis in which order do ou do things Don t document the most obvious things ( The input to CUP is in IC.cup ), don t repeat stuff alread in PA3.pdf Document non-obvious choices ( We build the tpe table after parsing, we do not handle situation X, we handle special situation Y like so ) Output format (e.g., first we print tpe table then we print ) Know th group s code 2 Toda ic IC Language Leical Analsis Snta Analsis Parsing AST Smbol Table etc. Inter. Rep. (IR) Code Generation ee Eecutable code Toda: IR Specific LIR language Translating HIR nodes Runtime organization Objects Polmorphism Net time: Simple lowering techniques Runtime organization Activation records (frames) PA4 3
2 Recap tomatoes + potatoes + carrots Leical analzer tomatoes,plus,potatoes,plus,carrots,eof Parser AddEpr left right Smtab hierarch Global tpe table AddEpr left right smbol tomatoes kind var tpe int Id int Tpe obj O potatoes var int boolean O2 LocationEpr id=tomatoes LocationEpr id=potatoes LocationEpr id=carrots carrots var int Foo O3 Tpe checking A d E : T[] A d E.length : int Additional semantic checks Move tomatoes,r Move potatoes,r2 Add R2,R... LIR 4 Low-level IR (LIR) An abstract machine language Generic instruction set Not specific to a particular machine Low-level language constructs No looping structures, onl labels + jumps/conditional jumps We will use two-operand instructions Advantage close to Intel assembl language LIR spec. available on web-site Will be used in PA4 Subject to changes LIR from T8 onl for demonstration purposes 5 LIR instructions Instruction Move c,rn Move,Rn Move Rn, Add Rm,Rn Sub Rm,Rn Mul Rm,Rn Meaning Rn = c Rn = = Rn Rn = Rn + Rm Rn = Rn Rm Rn = Rn * Rm... Immediate (constant) Memor (variable) Note : rightmost operand = operation destination Note 2: two register instr - second operand doubles as source and destination 6 2
3 Eample = 42; while ( > ) { = - ; Compare results stored in global compare register (implicit register) Condition depends on compare register Move 42,R Move R, _test_label: Move,R Compare,R JumpLE _end_label Move,R Move,R2 Sub R,R2 Move R2, Jump _test_label (warning: code shown is a naïve translation) 7 Translating epressions eample TR[ + 42] visit visit (left) Add R2, R AddEpr left right visit (right) Move, R Move 42, R2 Add R2, R LocationE id = Move, R ValueEpr val = 42 Move 42, R2 Ver inefficient translation can we do better? 8 Translation (IR lowering) How to translate HIR to LIR? Assuming HIR has AST form (ignore non-computation nodes) Define how each HIR node is translated Recursivel translate HIR (HIR tree traversal) TR[e] = LIR translation of HIR construct e A sequence of LIR instructions Temporar variables = new locations Use temporar variables (LIR registers) to store intermediate values during translation 9 3
4 Translating epressions Fresh virtual (LIR) register generated b translation Binar operations (arithmetic and comparisons) TR[e OP e2] Unar operations TR[OP e] R := TR[e] R2 := TR[e2] R3 := R OP R2 Shortcut notation to indicate target register NOT LIR instruction R := TR[e] R2 := OP R Translating (short-circuit) OR TR[e OR e2] R := T[e] Compare,R JumpTrue _end_label R2 := T[e2] Or R2,R (OR can be replaced b Move operation since R is ) Translating (short-circuit) AND TR[e AND e2] R := T[e] Compare,R JumpTrue _end_label R2 := T[e2] And R2,R (AND can be replaced b Move operation since R is ) 2 4
5 Translating arra and field access TR[e[e2]] Give class tpe of e need to compute offset of field f R := TR[e] R2 := TR[e2] MoveArra R[R2], R3 TR[e.f] Need to identif class tpe of e from semantic analsis phase R := TR[e] MoveField R.c f,r3 Constant representing offset of field f in objects of class tpe of e (we shall discuss object representation soon) 3 Translating statement block TR[s; s2; ; sn] TR[s] TR[s2] TR[s3] TR[sN] 4 Translating if-then-else TR[if (e) then s else s2] Fresh labels generated during translation R := TR[e] Compare,R JumpTrue _false_label T[s] Jump _end_label _false_label: T[s2] 5 5
6 Translating if-then TR[if (e) then s] Can avoid generating labels unnecessaril R := TR[e] Compare,R JumpTrue _end_label TR[s] 6 Translating while TR[while (e) s] _test_label: R := TR[e] Compare,R JumpTrue _end_label TR[s] Jump _test_label _end_label 7 Translating call/return TR[C.foo(e,,en)] R := TR[e] formal parameter name Rn := TR[en] StaticCall C_foo(=R,,n=Rn),R TR[e.foo(e2)] actual argument register R := TR[e] R2 := TR[e2] VirtualCall R.c foo (=R2),R TR[return e] R := TR[e] Return R Constant representing offset of method f in dispatch table of class tpe of e 8 6
7 Translation implementation Define classes for LIR instructions Define LoweringVisitor Appl visitor to translate each method Mechanism to generate new LIR registers (keep track of registers for net phase) Mechanism to generate new labels For each node tpe translation returns List of LIR instructions TR[e] Target register Splice lists: instructions.addall(tr[e]) (input is a tree, output is a flat list) 9 Eample revisited TR[ = 42; while ( > ) { =-; ] Move 42,R Move R, _test_label: Move,R Compare,R JumpLE _end_label TR[=-] Jump _test_label TR[ = 42] TR[ while ( > ) { =-; ] Move 42,R Move R, _test_label: Move,R Compare,R JumpLE _end_label Move,R Move,R2 Sub R2,R Move R, Jump _test_label Move 42,R Move R, TR[ while ( > ) { =-; ] spliced list for TR[=-] (actuall a DFS walk) 2 Naïve translation Pretend all LIR registers are local variables Increases memor needed for each procedure during runtime Epensive access vs. accessing real registers (spilling) Generate fresh LIR register per HIR node Lifetime of registers ver limited Allow consecutive labels Code bloat 2 7
8 Better translation Pretend all LIR registers are local variables Ideall: leave it to register allocation phase to store LIR registers in machine registers In this project we ignore this inefficienc Limit register allocation to single LIR instructions Generate fresh LIR register per HIR node Reuse registers Avoid generating registers for HIR leaves Allow consecutive labels Avoid generating consecutive labels Optimizations techniques discussed net time 22 Runtime organization Representation of basic tpes Representation of allocated objects Class instances Dispatch vectors Strings Arras Procedures Activation records (frames) Discussed net time (relevant mostl for PA5) 23 Representing data at runtime Source language tpes int, boolean, string, object tpes, arras etc. Target language tpes Single btes, integers, address representation Compiler maps source tpes to some combination of target tpes Implement source tpes using target tpes Compiler maps basic operations on source tpes to combinations of operations on target tpes We will limit our discussion to IC 24 8
9 Representing basic tpes in IC int, boolean, string Simplified representation: 32 bit for all tpes boolean tpe could be more efficientl implemented with single bte Arithmetic operations Addition, subtraction, multiplication, division, remainder Could be mapped directl to target language tpes and operations Eception: string concatenation implemented using librar function stringcat 25 Pointer tpes Represent addresses of source language data structures Usuall implemented as an unsigned integer (4 btes) Pointer dereferencing retrieves pointed value Ma produce an error Null pointer dereference Insert code to check fragile operations (in PA5) Onl implicit in our case 26 Object tpes Basic operations Field selection computing address of field, dereferencing address Method invocation Identifing method to be called, calling it How does it look at runtime? 27 9
10 Object tpes class Foo { int ; int ; void rise() { void shine() { 2 DispacthVectorPtr Runtime memor laout for object of class Foo Field offsets DispacthVectorPtr Method offsets rise shine Compile time information for Foo class tpe 28 Field selection Foo f; int q; q = f.; Move f,r MoveField R.,R2 Move R2,q 2 DispacthVectorPtr Runtime memor laout for object of class Foo Field offsets DispacthVectorPtr Method offsets rise shine Compile time information for Foo class tpe generated during LIR translation 29 Implementation Store map for each ClassTpe From field to offset (starting from, since reserved for DispatchVectorPtr) From method to offset 3
11 Object tpes and inheritance class Foo { int ; int ; void rise() { void shine() { class Bar etends Foo { int z; void twinkle() { void rise() { 2 3 DispacthVectorPtr z Runtime memor laout for object of class Bar Field offsets DispacthVectorPtr z rise shine twinkle Compile time information for Bar class tpe prefi from Foo prefi from Foo 3 Object tpes and polmorphism class Foo { Pointer to Bar void rise() { void shine() { f DVPtr class Bar etends Foo { void rise() { Initializes value of DVPtr for Bar class Main { void main() { Foo f = new Bar(); f.rise(); z Runtime memor laout for object of class Bar Foo dispatch vector Bar dispatch vector _Foo_rise _Bar_rise _Foo_shine _Foo_shine _Bar_twinkle Runtime static information 32 Dnamic binding class Foo { void rise() { void shine() { class Bar etends Foo { void rise() { class Main { void main() { Foo f = new Bar(); f.rise(); Foo dispatch vector Bar dispatch vector _Foo_rise _Foo_shine _Bar_rise _Foo_shine _Bar_twinkle Finding the right method implementation Done at runtime according to object tpe Using the Dispatch Vector (a.k.a. Dispatch Table) 33
12 Dispatch vectors in depth class Foo { void rise() { void shine() { class Bar etends Foo { void rise() { class Main { void main() { Foo f = new Bar(); f.rise(); Pointer to Bar f Pointer to Foo inside Bar DVPtr z Object laout rise _Bar_rise shine _Bar_shine Bar Dispatch Method vector code Vector contains addresses of methods Indeed b method-id number A method signature has the same id number for all subclasses 34 Dispatch vectors in depth class Foo { void rise() { void shine() { class Bar etends Foo { void rise() { class Main { void main() { Foo f = new Foo(); f.rise(); Pointer to Foo f DVPtr Object laout rise shine Foo Dispatch vector _Foo_rise _Foo_shine 35 Object creation Foo f = new Bar(); LIR translation computes object for each class tpe size of object Foo = + + z + DVPtr = ++ += 4 (6 btes) LIR translation computes object for each class tpe field offsets and method offsets for DispatchVector Librar allocateobject(6),r MoveField R.,_Bar_DV Move R,f 2 DispacthVectorPtr Runtime memor laout for object of class Foo Field offsets DispacthVectorPtr Method offsets rise shine Label generated for class tpe Bar during LIR translation Compile time information for Foo class tpe generated during LIR translation 36 2
13 See ou net week 37 3
Winter Compiler Construction T10 IR part 3 + Activation records. Today. LIR language
Winter 2006-2007 Compiler Construction T10 IR part 3 + Activation records Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University Today ic IC Language Lexical Analysis Syntax Analysis
More informationCS LIR Language Specification and microlir Simulator Version 1.2
CS368-3133 LIR Language Specification and microlir Simulator Version 1.2 This document specifies the LIR language and describes a simulator for the langauge. The latest version of this document and the
More informationObject Oriented Languages. Hwansoo Han
Object Oriented Languages Hwansoo Han Object-Oriented Languages An object is an abstract data tpe Encapsulates data, operations and internal state behind a simple, consistent interface. z Data Code Data
More informationWinter Compiler Construction T11 Activation records + Introduction to x86 assembly. Today. Tips for PA4. Today:
Winter 2006-2007 Compiler Construction T11 Activation records + Introduction to x86 assembly Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University Today ic IC Language Lexical Analysis
More informationCS 403 Compiler Construction Lecture 8 Syntax Tree and Intermediate Code Generation [Based on Chapter 6 of Aho2] This Lecture
CS 403 Compiler Construction Lecture 8 Snta Tree and Intermediate Code Generation [Based on Chapter 6 of Aho2] 1 This Lecture 2 1 Remember: Phases of a Compiler This lecture: Intermediate Code This lecture:
More informationImplementing Object-Oriented Languages. Implementing instance variable access. Implementing dynamic dispatching (virtual functions)
Implementing Object-Oriented Languages Implementing instance variable access Ke features: inheritance (possibl multiple) subtping & subtpe polmorphism message passing, dnamic binding, run-time tpe testing
More informationTypical Compiler. Ahead- of- time compiler. Compilers... that target interpreters. Interpreter 12/9/15. compile time. run time
Ahead- of- time Tpical Compiler compile time C source C 86 assembl 86 assembler 86 machine Source Leical Analzer Snta Analzer Semantic Analzer Analsis Intermediate Code Generator Snthesis run time 86 machine
More informationClasses. Compiling Methods. Code Generation for Objects. Implementing Objects. Methods. Fields
Classes Implementing Objects Components fields/instance variables values differ from to usuall mutable methods values shared b all s of a class usuall immutable component visibilit: public/private/protected
More informationCompiler construction
This lecture Compiler construction Lecture 5: Project etensions Magnus Mreen Spring 2018 Chalmers Universit o Technolog Gothenburg Universit Some project etensions: Arras Pointers and structures Object-oriented
More informationBuilding up a language SICP Variations on a Scheme. Meval. The Core Evaluator. Eval. Apply. 2. syntax procedures. 1.
6.001 SICP Variations on a Scheme Scheme Evaluator A Grand Tour Techniques for language design: Interpretation: eval/appl Semantics vs. snta Sntactic transformations Building up a language... 3. 1. eval/appl
More informationBuilding Interpreters
Building Interpreters Mool Sagiv html://www.cs.tau.ac.il/~msagiv/courses/wcc13.html Chapter 4 1 Structure of a simple compiler/interpreter Leical analsis Snta analsis Runtime Sstem Design Intermediate
More informationWinter Compiler Construction Who. Mailing list and forum
Winter 2006-2007 Compiler Construction 0368-3133 Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University Who Roman Manevich Schreiber Open-space (basement) Tel: 640-5358 rumster@post.tau.ac.il
More informationVariables and Bindings
Net: Variables Variables and Bindings Q: How to use variables in ML? Q: How to assign to a variable? # let = 2+2;; val : int = 4 let = e;; Bind the value of epression e to the variable Variables and Bindings
More informationCompilers. 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 informationCOMP 181. Prelude. Intermediate representations. Today. High-level IR. Types of IRs. Intermediate representations and code generation
Prelude COMP 181 Lecture 14 Intermediate representations and code generation October 19, 2006 Who is Seth Lloyd? Professor of mechanical engineering at MIT, pioneer in quantum computing Article in Nature:
More informationIntroduction to Shape and Pointer Analysis
Introduction to Shape and Pointer Analsis CS 502 Lecture 11 10/30/08 Some slides adapted from Nielson, Nielson, Hankin Principles of Program Analsis Analsis of the Heap Thus far, we have focussed on control
More informationThe code generator must statically assign a location in the AR for each temporary add $a0 $t1 $a0 ; $a0 = e 1 + e 2 addiu $sp $sp 4 ; adjust $sp (!
Lecture Outline Code Generation (II) Adapted from Lectures b Profs. Ale Aiken and George Necula (UCB) Allocating temporaries in the Activation Record Let s optimie cgen a little Code generation for OO
More informationData, memory. Pointers and Dynamic Variables. Example. Pointers Variables (or Pointers) Fall 2018, CS2
Data, memor Pointers and Dnamic Variables Fall 2018, CS2 memor address: ever bte is identified b a numeric address in the memor. a data value requiring multiple btes are stored consecutivel in memor cells
More informationSemantics. Names. Binding Time
/24/ CSE 3302 Programming Languages Semantics Chengkai Li, Weimin He Spring Names Names: identif language entities variables, procedures, functions, constants, data tpes, Attributes: properties of names
More informationProgramming Language Dilemma Fall 2002 Lecture 1 Introduction to Compilation. Compilation As Translation. Starting Point
Programming Language Dilemma 6.035 Fall 2002 Lecture 1 Introduction to Compilation Martin Rinard Laborator for Computer Science Massachusetts Institute of Technolog Stored program computer How to instruct
More informationSimple example. Analysis of programs with pointers. Program model. Points-to relation
Simple eample Analsis of programs with pointers := 5 ptr := & *ptr := 9 := program S1 S2 S3 S4 What are the defs and uses of in this program? Problem: just looking at variable names will not give ou the
More informationCS 132 Compiler Construction, Fall 2011 Instructor: Jens Palsberg Multiple Choice Exam, Dec 6, 2011
CS 132 Compiler Construction, Fall 2011 Instructor: Jens Palsberg Multiple Choice Eam, Dec 6, 2011 ID Name This eam consists of 22 questions. Each question has four options, eactl one of which is correct,
More informationTail Recursion: Factorial. Begin at the beginning. How does it execute? Tail recursion. Tail recursive factorial. Tail recursive factorial
Begin at the beginning Epressions (Synta) Compile-time Static Eec-time Dynamic Types Values (Semantics) 1. Programmer enters epression 2. ML checks if epression is well-typed Using a precise set of rules,
More informationModule Mechanisms CS412/413. Modules + abstract types. Abstract types. Multiple Implementations. How to type-check?
CS412/413 Introduction to Compilers and Translators Andrew Mers Cornell Universit Lecture 19: ADT mechanisms 10 March 00 Module Mechanisms Last time: modules, was to implement ADTs Module collection of
More informationFall Compiler Principles Lecture 6: Intermediate Representation. Roman Manevich Ben-Gurion University of the Negev
Fall 2015-2016 Compiler Principles Lecture 6: Intermediate Representation Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation
More informationAnnouncements. CSCI 334: Principles of Programming Languages. Lecture 19: C++
Announcements CSCI 4: Principles of Programming Languages Lecture 19: C++ HW8 pro tip: the HW7 solutions have a complete, correct implementation of the CPS version of bubble sort in SML. All ou need to
More informationPointers CMPE-013/L. Pointers. Pointers What do they do? Pointers What are pointers? Gabriel Hugh Elkaim Winter 2014
CMPE-013/L A Variable's versus A Variable's Value In some situations, we will want to work with a variable's address in memor, rather than the value it contains Gabriel Hugh Elkaim Winter 2014 Variable
More informationThe Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.
The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees
More informationNews. CSE 130: Programming Languages. Environments & Closures. Functions are first-class values. Recap: Functions as first-class values
CSE 130: Programming Languages Environments & Closures News PA 3 due THIS Friday (5/1) Midterm NEXT Friday (5/8) Ranjit Jhala UC San Diego Recap: Functions as first-class values Arguments, return values,
More informationSide note: Tail Recursion. Begin at the beginning. Side note: Tail Recursion. Base Types. Base Type: int. Base Type: int
Begin at the beginning Epressions (Synta) Compile-time Static Eec-time Dynamic Types Values (Semantics) 1. Programmer enters epression 2. ML checks if epression is well-typed Using a precise set of rules,
More informationPrinciples 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 informationCS S-11 Memory Management 1
CS414-2017S-11 Management 1 11-0: Three places in memor that a program can store variables Call stack Heap Code segment 11-1: Eecutable Code Code Segment Static Storage Stack Heap 11-2: Three places in
More informationSemantics (cont.) Symbol Table. Static Scope. Static Scope. Static Scope. CSE 3302 Programming Languages. Static vs. Dynamic Scope
-2-1 CSE 3302 Programming Languages Semantics (cont.) Smbol Table Smbol Table: maintain bindings. Can be viewed as functions that map names to their attributes. Names SmbolTable Attributes Chengkai Li,
More informationTypical workflow. CSE341: Programming Languages. Lecture 17 Implementing Languages Including Closures. Reality more complicated
Typical workflow concrete synta (string) "(fn => + ) 4" Parsing CSE341: Programming Languages abstract synta (tree) Lecture 17 Implementing Languages Including Closures Function Constant + 4 Var Var Type
More informationRecap. Recap. If-then-else expressions. If-then-else expressions. If-then-else expressions. If-then-else expressions
Recap Epressions (Synta) Compile-time Static Eec-time Dynamic Types (Semantics) Recap Integers: +,-,* floats: +,-,* Booleans: =,
More informationCode Generation II. Code generation for OO languages. Object layout Dynamic dispatch. Parameter-passing mechanisms Allocating temporaries in the AR
Code Generation II Code generation for OO languages Object layout Dynamic dispatch Parameter-passing mechanisms Allocating temporaries in the AR Object Layout OO implementation = Stuff from last lecture
More informationIntermediate 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 informationRegister Allocation 3/16/11. What a Smart Allocator Needs to Do. Global Register Allocation. Global Register Allocation. Outline.
What a Smart Allocator Needs to Do Register Allocation Global Register Allocation Webs and Graph Coloring Node Splitting and Other Transformations Determine ranges for each variable can benefit from using
More informationWednesday, February 19, 2014
Wednesda, Februar 19, 2014 Topics for toda Solutions to HW #2 Topics for Eam #1 Chapter 6: Mapping High-level to assembl-level The Pep/8 run-time stack Stack-relative addressing (,s) SP manipulation Stack
More informationIC Language Specification
CS 301 Spring 2016 IC Language Specification The IC Language For the implementation project, you will build a compiler for an object-oriented language called IC (for Irish Coffee 1 ), which is essentially
More informationProgramming Languages
CSE 130 : Fall 2008 Programmg Languages Lecture 4: Variables, Environments, Scope News PA 1 due Frida 5pm PA 2 out esterda (due net Fi) Fri) Ranjit Jhala UC San Diego Variables and Bdgs Q: How to use variables
More informationIntermediate 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 informationJava Primer 1: Types, Classes and Operators
Java Primer 1 3/18/14 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Java Primer 1: Types,
More informationPointers. Memory. void foo() { }//return
Pointers Pointers Every location in memory has a unique number assigned to it called it s address A pointer is a variable that holds a memory address A pointer can be used to store an object or variable
More informationSyntactic Directed Translation
Sntactic Directed Translation What is Sntax-Directed Translation? Translation Process guided b Context-Free Grammars Attach Attributes to Grammar Smbols Attribute Grammars & Sntax-Directed Definitions
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a
More informationThe 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 informationToday Winter Compiler Construction T5 AST Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University
Winter 007-008 Compiler Construction T5 AST Mooly Sagiv and Roman Manevich School of Computer Science Tel-Aviv University Today ic IC Language Today: EBNF Lexical Analysis Syntax Analysis Parsing AST construction
More informationFall Compiler Principles Lecture 5: Intermediate Representation. Roman Manevich Ben-Gurion University of the Negev
Fall 2016-2017 Compiler Principles Lecture 5: Intermediate Representation Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation
More informationCSE 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 informationCSE450. Translation of Programming Languages. Lecture 11: Semantic Analysis: Types & Type Checking
CSE450 Translation of Programming Languages Lecture 11: Semantic Analysis: Types & Type Checking Structure Project 1 - of a Project 2 - Compiler Today! Project 3 - Source Language Lexical Analyzer Syntax
More information6.035 Project 3: Unoptimized Code Generation. Jason Ansel MIT - CSAIL
6.035 Project 3: Unoptimized Code Generation Jason Ansel MIT - CSAIL Quiz Monday 50 minute quiz Monday Covers everything up to yesterdays lecture Lexical Analysis (REs, DFAs, NFAs) Syntax Analysis (CFGs,
More informationTHEORY OF COMPILATION
Lecture 10 Code Generation THEORY OF COMPILATION EranYahav Reference: Dragon 8. MCD 4.2.4 1 You are here Compiler txt Source Lexical Analysis Syntax Analysis Parsing Semantic Analysis Inter. Rep. (IR)
More informationThe SPL Programming Language Reference Manual
The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming
More informationWho. Winter Compiler Construction Generic compiler structure. Mailing list and forum. IC compiler. How
Winter 2007-2008 Comiler Construction 0368-3133 Mooly Sagiv and Roman Manevich School of Comuter Science Tel-Aviv University Who Roman Manevich Schreiber Oen-sace (basement) Tel: 640-5358 rumster@ost.tau.ac.il
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler
More informationC Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee
C Language Part 1 (Minor modifications by the instructor) References C for Python Programmers, by Carl Burch, 2011. http://www.toves.org/books/cpy/ The C Programming Language. 2nd ed., Kernighan, Brian,
More informationCS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find
CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More informationProgramming Languages
CSE 130: Spring 2010 Programming Languages Lecture 3: Epressions and Types Ranjit Jhala UC San Diego A Problem fun -> +1 Can functions only have a single parameter? A Solution: Simultaneous Binding Parameter
More informationIntermediate representation
Intermediate representation Goals: encode knowledge about the program facilitate analysis facilitate retargeting facilitate optimization scanning parsing HIR semantic analysis HIR intermediate code gen.
More informationProf. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan
Language Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Semantic Analysis Compiler Architecture Front End Back End Source language Scanner (lexical analysis)
More informationCS164: Programming Assignment 5 Decaf Semantic Analysis and Code Generation
CS164: Programming Assignment 5 Decaf Semantic Analysis and Code Generation Assigned: Sunday, November 14, 2004 Due: Thursday, Dec 9, 2004, at 11:59pm No solution will be accepted after Sunday, Dec 12,
More informationOperators and Expressions
Operators and Expressions Conversions. Widening and Narrowing Primitive Conversions Widening and Narrowing Reference Conversions Conversions up the type hierarchy are called widening reference conversions
More informationCSE P 501 Exam 8/5/04
Name There are 7 questions worth a total of 65 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 references: Course
More informationTYPES, VALUES AND DECLARATIONS
COSC 2P90 TYPES, VALUES AND DECLARATIONS (c) S. Thompson, M. Winters 1 Names, References, Values & Types data items have a value and a type type determines set of operations variables Have an identifier
More informationECE 573 Midterm 1 September 29, 2009
ECE 573 Midterm 1 September 29, 2009 Name: Purdue email: Please sign the following: I affirm that the answers given on this test are mine and mine alone. I did not receive help from an person or material
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationProgramming Languages
CSE 130 : Fall 2008 Programming Languages Lecture 3: Epressions and Types Ranjit Jhala UC San Diego News PA 1 due (net) Fri 10/10 5pm PA 2 out today or tomorrow Office hours posted on Webpage: Held in
More informationSemantic Analysis. Compiler Architecture
Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Source Compiler Architecture Front End Scanner (lexical tokens Parser (syntax Parse tree Semantic Analysis
More informationLecture 15 CIS 341: COMPILERS
Lecture 15 CIS 341: COMPILERS Announcements HW4: OAT v. 1.0 Parsing & basic code generation Due: March 28 th No lecture on Thursday, March 22 Dr. Z will be away Zdancewic CIS 341: Compilers 2 Adding Integers
More informationDEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING, THE UNIVERSITY OF NEW MEXICO ECE-238L: Computer Logic Design Fall 2013.
ECE-8L: Computer Logic Design Fall Notes - Chapter BINARY NUMBER CONVERSIONS DECIMAL NUMBER SYSTEM A decimal digit can take values from to 9: Digit-b-digit representation of a positive integer number (powers
More information(Not Quite) Minijava
(Not Quite) Minijava CMCS22620, Spring 2004 April 5, 2004 1 Syntax program mainclass classdecl mainclass class identifier { public static void main ( String [] identifier ) block } classdecl class identifier
More informationThe PCAT Programming Language Reference Manual
The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language
More informationTHEORY OF COMPILATION
Lecture 09 IR (ackpatching) THEORY OF COMPILATION Eran Yahav www.cs.technion.ac.il/~yahave/tocs2011/compilers-lec09.pptx Reference: Dragon 6.2,6.3,6.4,6.6 1 Recap Lexical analysis regular expressions identify
More informationCS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 17: Types and Type-Checking 25 Feb 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 17: Types and Type-Checking 25 Feb 08 CS 412/413 Spring 2008 Introduction to Compilers 1 What Are Types? Types describe the values possibly
More informationSolutions - Homework 2 (Due date: February 5 5:30 pm) Presentation and clarity are very important! Show your procedure!
Solutions - Homework (Due date: Februar 5 th @ 5: pm) Presentation and clarit are ver important! Show our procedure! PROBLEM ( PTS) In these problems, ou MUST show our conversion procedure. a) Convert
More informationCSE 431S Final Review. Washington University Spring 2013
CSE 431S Final Review Washington University Spring 2013 What You Should Know The six stages of a compiler and what each stage does. The input to and output of each compilation stage (especially the back-end).
More informationGabriel Hugh Elkaim Spring CMPE 013/L: C Programming. CMPE 013/L: C Programming
1 CMPE 013/L Gabriel Hugh Elkaim Sring 2013 2 A Variable's versus A Variable's Value In some situations, we will want to work with a variable's address in memor, rather than the value it contains Variable
More informationIntermediate Formats. for object oriented languages
Intermediate Formats for object oriented languages Program Representation Goals Enable Program Analysis and Transformation Semantic Checks, Correctness Checks, Optimizations Structure Translation to Machine
More informationCSE 504. Expression evaluation. Expression Evaluation, Runtime Environments. One possible semantics: Problem:
Expression evaluation CSE 504 Order of evaluation For the abstract syntax tree + + 5 Expression Evaluation, Runtime Environments + + x 3 2 4 the equivalent expression is (x + 3) + (2 + 4) + 5 1 2 (. Contd
More informationOperational Semantics of Cool
Operational Semantics of Cool Key Concepts semantics: the meaning of a program, what does program do? how the code is executed? operational semantics: high level code generation steps of calculating values
More informationCS 430 Spring Mike Lam, Professor. Data Types and Type Checking
CS 430 Spring 2015 Mike Lam, Professor Data Types and Type Checking Type Systems Type system Rules about valid types, type compatibility, and how data values can be used Benefits of a robust type system
More informationCompilers. Cool Semantics II. Alex Aiken
Compilers Informal semantics of new T Allocate locations to hold all attributes of an object of class T Essentially, allocate a new object Set attributes with their default values Evaluate the initializers
More informationPrinciples of Programming Languages
Principles of Programming Languages Lesson 14 Type Checking Collaboration and Management Dana Fisman www.cs.bgu.ac.il/~ppl172 1 Type Checking We return to the issue of type safety we discussed informally,
More information6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson
6.184 Lecture 4 Interpretation Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson 1 Interpretation Parts of an interpreter Arithmetic calculator
More informationIR Lowering. Notation. Lowering Methodology. Nested Expressions. Nested Statements CS412/CS413. Introduction to Compilers Tim Teitelbaum
IR Lowering CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 19: Efficient IL Lowering 7 March 07 Use temporary variables for the translation Temporary variables in the Low IR store intermediate
More informationIntermediate Formats. Martin Rinard Laboratory for Computer Science
MIT 6.035 Intermediate Formats Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Program Representation Goals Enable Program Analysis and Transformation Semantic Checks,
More informationLecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far
Lecture Outline Operational Semantics of Cool Lecture 13 COOL operational semantics Motivation Notation The rules Prof. Aiken CS 143 Lecture 13 1 Prof. Aiken CS 143 Lecture 13 2 Motivation We must specify
More informationType checking. Jianguo Lu. November 27, slides adapted from Sean Treichler and Alex Aiken s. Jianguo Lu November 27, / 39
Type checking Jianguo Lu November 27, 2014 slides adapted from Sean Treichler and Alex Aiken s Jianguo Lu November 27, 2014 1 / 39 Outline 1 Language translation 2 Type checking 3 optimization Jianguo
More informationCOMPILER DESIGN. Intermediate representations Introduction to code generation. COMP 442/6421 Compiler Design
1 COMPILER DESIGN Intermediate representations Introduction to code generation Concordia University Introduction to code generation 2 Front end: Lexical Analysis Syntactic Analysis Intermediate Code/Representation
More informationCredits and Disclaimers
Credits and Disclaimers 1 The eamples and discussion in the following slides have been adapted from a variet of sources, including: Chapter 3 of Computer Sstems 3 nd Edition b Brant and O'Hallaron 86 Assembl/GAS
More informationRun-time Environments. Lecture 13. Prof. Alex Aiken Original Slides (Modified by Prof. Vijay Ganesh) Lecture 13
Run-time Environments Lecture 13 by Prof. Vijay Ganesh) Lecture 13 1 What have we covered so far? We have covered the front-end phases Lexical analysis (Lexer, regular expressions,...) Parsing (CFG, Top-down,
More informationWeek 27 Algebra 1 Assignment:
Week 7 Algebra Assignment: Da : p. 494 #- odd, -, 8- Da : pp. 496-497 #-9 odd, -6 Da : pp. 0-0 #-9 odd, -, -9 Da 4: p. 09 #-4, 7- Da : pp. - #-9 odd Notes on Assignment: Page 494: General notes for this
More informationOptional: Building a processor from scratch
Optional: Building a processor from scratch In this assignment we are going build a computer processor from the ground up, starting with transistors, and ending with a small but powerful processor. The
More informationEL2310 Scientific Programming
Lecture 11: Structures and Memory (yaseminb@kth.se) Overview Overview Lecture 11: Structures and Memory Structures Continued Memory Allocation Lecture 11: Structures and Memory Structures Continued Memory
More informationTypes. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus
Types Type checking What is a type? The notion varies from language to language Consensus A set of values A set of operations on those values Classes are one instantiation of the modern notion of type
More informationIntermediate Code, Object Representation, Type-Based Optimization
CS 301 Spring 2016 Meetings March 14 Intermediate Code, Object Representation, Type-Based Optimization Plan Source Program Lexical Syntax Semantic Intermediate Code Generation Machine- Independent Optimization
More informationOperational Semantics. One-Slide Summary. Lecture Outline
Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:
More informationCMPT 379 Compilers. Anoop Sarkar. 11/13/07 1. TAC: Intermediate Representation. Language + Machine Independent TAC
CMPT 379 Compilers Anoop Sarkar http://www.cs.sfu.ca/~anoop 11/13/07 1 TAC: Intermediate Representation Language Specific Language + Machine Independent Machine Dependent Front End AST Intermediate Code
More information