: Compiler Design
|
|
- Donna Fox
- 5 years ago
- Views:
Transcription
1 : Compiler Design 7.2 Assignment statement 7.3 Condi2onal statement 7.4 Loops 7.5 Method invoca2on Thomas R. Gross Computer Science Department ETH Zurich, Switzerland
2 Outline 7.1 Access to operands 7.2 Assignment statement 7.3 CondiGonal statement 7.4 Loops 7.5 Method invocagon 2
3 7.2 Assignment statement CompilaGon of assignment statement topic of homework #1 Back then: numerous restricgons Only local int variables supported Now: remove restricgons Some aspects delayed 2ll 7.5 (Method invoca2on) 3
4 Extending the code generator Deal with other data types New: array elements New: fields of instances Idea: preserve overall IR design Introduce trees to specify operand access 4
5
6 New IR nodes ARRAY Specifies array element Requires name of array and Tree for index expression FIELD Could include subtree to compute address As discussed earlier 7
7 Other restricgons Did not handle statements that required more registers than available Virtual registers postpone dealing with this aspect Could break a tree that requires more than R registers into separate trees Introduce temporary variables to hold intermediate results 8
8 Outline 7.1 Access to operands 7.2 Assignment statement 7.3 CondiGonal statement 7.4 Loops 7.5 Method invocagon 9
9 7.3 CondiGonal statement JavaLi allow two kinds of condigonal statements 1. if- then if (expression) { <body> } 2. if- then- else if (expression) { <body> } else { <body> } 10
10 1. if- then if (expression) { <then-part> } Invoke code generator on expression Code to decide if then- part is executed Invoke code generator on then- part 2. if- then- else if (expression) { <then-part> } else { <else-part> } Invoke code generator on expression Code to decide if then- part is executed Invoke code generator on then- part Code to skip around else- part 12 Invoke code generator on else- part
11 JavaLi allows only simple expressions Only one comparison Only limited subset of operators Expression format > < = <operand 1> { } <operand 2> 14
12 Code outline Eval expression Eval expression Test Test Branch Branch Then- part d Then- part d Else- part d con2nue con2nue 16
13 Outline 7.1 Access to operands 7.2 Assignment statement 7.3 CondiGonal statement 7.4 Loops 7.5 Method invocagon 18
14 7.4 Loops JavaLi has only one looping construct while (expression) { } <loop-body> Can translate all other kinds of looping contructs into while- loops 19
15 TranslaGon similar to condigonal statement Same rules for expression while- loop while (expression) { <loop-body> } Invoke code generator on expression Code to decide if loop- body is executed Invoke code generator on loop- body Code to jump back to start of loop 20
16 Code outline Eval expression Test Branch Body d Uncond. branch con2nue 21
17 Expression must be evaluated for every iteragon Simple scheme Straighcorward to implement Close to condi2onal statement One uncondigonal branch for each iteragon 22
18 Code outline 2 Idea: eliminate uncondigonal branch at the end of each loop body Move loop congnuagon test to the end of the loop 23
19 Code outline 2 Uncond. branch Body d Eval expression Test Branch con2nue 24
20 Possible performance improvement Reduced number of uncondi2onal branches Based on the guess that the loop body is executed Processor implementa2on may prefetch / pre- execute uncondi2onal branches Other opgons exist 25
21 Other loop constructs Take a sheet of paper and sketch how you could translate a for loop for (int i = low; i < high; i ++) { } <body> Show a figure that outlines the code (similar to slides shown during the lecture) 26
22 Init loop counter Code outline Eval expression Test Branch Body d Update loop counter Uncond. branch con2nue 28
23 Outline 7.1 Access to operands 7.2 Assignment statement 7.3 CondiGonal statement 7.4 Loops 7.5 Method invocagon 29
24 7.5 Method invocagon Finding the correct body of code Covered earlier Storage for method- local variables Passing of parameters (arguments) Handling the return value 30
25
26 Calling convengon control flow in foo control flow in bar congnue return 34
27 Calling convengon The calling convengon decides which steps/acgons of method invocagon/return are Done by the caller Done by the callee and how any data transfer is implemented Where the data are stored Data includes return address and return value May have to include type casts Usually defined for all compilers/sokware developers on a given operagng system Ensures interoperability 35
28 Calling convengon Stack principal data structure Control stack Set up by run- Gme system Supported by instruc2ons and/or resources (registers) on some systems Ac?va?on record keeps informagon on method invocagons that are currently acgve (or live ) Also known as frame 36
29 AcGons Consider this method invoca?on. // in some method foo B bref; int val = bref.bar(y1,y2,, yn); List all the steps that are necessary to implement the call and its return (on a sheet of paper). 37
30 AcGons (related to method invocagon) IdenGfy target IdenGfy stargng address of callee Handle parameters Evaluate yi Cast as necessary Put into loca2on where it can be found Push onto stack Place into register Leave somewhere else Save registers Find space for temporaries 38
31 AcGons (related to method invocagon) Determine and store return address Find space for return value Set up acgvagon record for callee Link to ac2va2on record of caller ( control link ) Transfer control to callee 39
32 Callling convengon Some of these steps Must be done by caller Must be done by callee Method that was invoked Can be done by either one Must: either for correctness or for performance 40
33 AcGons (related to method return) Transfer control to caller/return address Deliver return value Remove acgvagon record for callee Reclaim any temporary storage Switch to ac2va2on record of caller 41
34 Temp k... Temp 0 Simple acgvagon record stackpointer Local m Local 0 old SP old FP Return address target (parameter y0) parameter y1 parameter yn Return value framepointer 43
35 Comments Sufficient for JavaLi Will not work for varargs Methods with a variable number of arguments (actuals) Parameters are found on the stack Actuals: posi2ve offset from frame pointer Offset recorded in symbol table Locals are found on the stack Nega2ve offset from frame pointer Offset recorded in symbol table Temporary region can grow w/o limit Temporaries can be accessed via frame pointer 44
36 Symbol table Must complete symbol table prior to code generagon local 0-4 local 1-8 parameter parameter return value + 24 this (implicit parameter)
37 Parameter passing (Recall) JavaLi passes all arguments by value. Not the address of a variable is passed but its value. The value of a reference can be used to read/write the object the reference refers to But the reference cannot be changed At call site (of bref.bar(y1, y2,, yn) ) Evaluate yn, push onto stack Evaluate yn- 1, yn- 2, y1, y0 Could be an expression, i.e. bref.bar(y1, a b,, yn) May require cast 46
38 Actual- formal correspondence Other languages are based on (or include) different models Language spec should specify model Here we look at the compiler s side Call- by- value Call- by- reference Call- by- result Call- by- name 47
39 7.5.1 Call- by- value The only opgon in Java (and JavaLi) Easy to understand Look at method in isola2on With references risk of aliasing Easy to implement Caller knows how to evaluate actuals Callee uses a parameter like a local ini2alized by caller PotenGally inefficient Pass an array/an object by value? May require copy (2me consuming) Language restricts call- by- value to word- size en22es (ints, references) 49
40 7.5.2 Call- by- reference Caller passes address to callee Could be address of a field. an object. a local variable. an array element Indicate with keyword or symbol if a parameter is passed by reference Call- by- value usually supported as well Each parameter can be handled differently void foo (ref type x) { } foo(ref y) // call site 50
41 Caller must evaluate address of parameter(s) Pass address from caller to callee Can usually use space that holds parameter, other arrangements possible if space requirements known Callee de- references actual to get value at address or to update storage locagon at the address Two steps: Get address Use address 51
42 Discussion Advantages of call- by- reference Disadvantages of call- by- reference 52
43 Discussion Advantages of call- by- reference Callee can modify variables in caller s scope Efficient passing of large objects/arrays [Maybe] restrict callee access to caller s objects Disadvantages of call- by- reference Callee can modify variables in caller s scope May be able to access any loca2on Bug in callee may have global effect Aliasing the norm 54
44 Disadvantages (congnued) Possible overhead and/or difficulges in opgmizagon void foo (ref int x, ref int y) { int z; x = x + z ; y = z + 1 ; = x... ; } One extra step for each access Cannot assume that x is unchanged Must prohibit calls like foo(k m, ref x) 55
45 7.5.3 Call- by- result Call- by- result is a combinagon of call- by- value (inside the callee) and call- by- reference (upon reaching the end of the callee) Callee copies the local value of a parameter (value inside the callee) back to the caller void foo(result int x) Parameter x is like a local variable inigalized by caller Effect of call obtained by inspecgng x aker return 56
46 void bar (result int x, result int y) { int a, b; x = x + 1; a = 2; y = y 1; b = 4; x = x + a; } // somewhere int k = 1; int m = 2; bar (k, m) // k == 4, m == 1 58
47 Discussion void foo(result int x) Callee needs address of x To store result at the end Implement passing of parameter(s) like call- by- reference Cannot allow foo( a b) Do we need a return statement? Yes: indica2on that parameters have meaningful value(s) No: Value(s) copied back to caller in any case 59
48 ImplementaGon void foo(result int x) Access to x inside method foo different from call- by- reference 60
49 ImplementaGon void foo(result int x) Access to x inside method foo different from call- by- reference Callee cannot modify caller s context Need to create a temporary, inigalize temporary with parameter value Upon return copy value from temporary to caller 61
50 ImplementaGon void bar (result int x, result int y) Use temporary (say xt, yt) Body of bar: xt = x; yt = y; xt = xt + 1; a = 2; yt = yt 1; b = 4; xt = xt + a; x = xt; y = yt; 62
51 Final result depends on order of copying results Consider int k = 1; bar (k, k) // k == 4 or k == 0 Should be decided by language reference manual either from y1 yn or yn y1 63
52 Discussion Advantages of call- by- result Mul2ple return values for a func2on Disadvantages of call- by- result Implementa2on overhead Aliasing makes programs difficult to understand 65
53 7.5.4 Call- by- name Idea: textual subsgtugon of the formal parameter by the actual parameter Hand- off a variable to callee Example void foo (name int x, name int k) { } k = 2; x = 5; k = 3; x = 1; 66
54 Example (congnued) // call site int [] A = new int[10]; int j; foo (A [j * 2], j) With call- by- name, the call means foo (A [j * 2], j) 67
55 Example (congnued) // call site int [] A = new int[10]; int j; foo (A [j * 2], j) With call- by- name, the call means foo (A [j * 2], j) ExecuGon k = 2; j = 2; x = 5; A[j*2] = 5; // A[4] k = 3; j = 3; x = 1; A[j*2] = 1; // A[6] 68
56 Discussion Who wants that? How does the compiler implement call- by- name? 70
57 OpGon 1: interpreter Use just- in- Gme compiler Invoke compiler at each call site, for each invocagon Compiler automagcally captures actual parameters 71
58 OpGon 2: stub generagon Ahead- of- Gme compiler produces (for each call- by- name parameter) a stub that generates the address of the parameter Callee invokes stub to access a call- by- name parameter For each parameter P i the stub EP i yields the address 72
59 Example, congnued foo (A [j * 2], j) EP 2 Get address of j Put address into loca2on L 2 Con2nue as in call- by- reference EP 1 Get address of j Get value, compute 2, put value into temporary loca2on T Get address of A[T] Put address into loca2on L 1 Con2nue as in call- by- reference 73
60 Discussion Difficult to implement In ahead- of- 2me framework PotenGally expensive execugon Many indirec2ons Frequent compila2ons (in just- in- 2me framework) Destroys modularity Cannot deduce effect of method foo by inspec2ng body of foo 74
61 Comparison (Not really JavaLi) No need to implement But you should know concepts Example Global variables Could be in an instance int j; int [] B = new int[2]; 75
62 x is passed by void quest( int x){ j = 0; x = x + 2; B[j] = 10; j = 1; x = x + 2; } void main() { B[0] = 1; B[1] = 1; j = 0; value reference result name quest(b[j]); } 76
Compiler Design Spring 2017
Compiler Design Spring 2017 7.5 Method invocation Dr. Zoltán Majó Compiler Group Java HotSpot Virtual Machine Oracle Corporation 1 Admin issues There will be a recitation session today In CAB G 11 @ 15:15
More information: Compiler Design
252-210: Compiler Design 7.5.* Actuals/formals correspondence Thomas R. Gross Computer Science Department ETH Zurich, Switzerland Actual- formal correspondence 7.5.1 Call- by- value Caller passes value
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter
More information: Advanced Compiler Design
263-2810: Advanced Compiler Design Thomas R. Gross Computer Science Department ETH Zurich, Switzerland Topics Program opgmizagon Op%miza%on Op%mize for (execu%on) speed Op%mize for (code) size Op%mize
More informationG Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing
More informationLECTURE 19. Subroutines and Parameter Passing
LECTURE 19 Subroutines and Parameter Passing ABSTRACTION Recall: Abstraction is the process by which we can hide larger or more complex code fragments behind a simple name. Data abstraction: hide data
More informationCS64 Week 5 Lecture 1. Kyle Dewey
CS64 Week 5 Lecture 1 Kyle Dewey Overview More branches in MIPS Memory in MIPS MIPS Calling Convention More Branches in MIPS else_if.asm nested_if.asm nested_else_if.asm Memory in MIPS Accessing Memory
More informationInstructor: 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 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 informationCSE 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 informationCode 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 informationCode Generation. The Main Idea of Today s Lecture. We can emit stack-machine-style code for expressions via recursion. Lecture Outline.
The Main Idea of Today s Lecture Code Generation We can emit stack-machine-style code for expressions via recursion (We will use MIPS assembly as our target language) 2 Lecture Outline What are stack machines?
More informationCode Generation. Lecture 12
Code Generation Lecture 12 1 Lecture Outline Topic 1: Basic Code Generation The MIPS assembly language A simple source language Stack-machine implementation of the simple language Topic 2: Code Generation
More informationWe can emit stack-machine-style code for expressions via recursion
Code Generation The Main Idea of Today s Lecture We can emit stack-machine-style code for expressions via recursion (We will use MIPS assembly as our target language) 2 Lecture Outline What are stack machines?
More informationCS 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 informationResearch 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 informationCS 61C: Great Ideas in Computer Architecture. Lecture 6: More MIPS, MIPS Func.ons. Instructor: Sagar Karandikar
CS 61C: Great Ideas in Computer Architecture Lecture 6: More MIPS, MIPS Func.ons Instructor: Sagar Karandikar sagark@eecs.berkeley.edu hap://inst.eecs.berkeley.edu/~cs61c 1 Machine Interpreta4on Levels
More informationCOMP 303 Computer Architecture Lecture 3. Comp 303 Computer Architecture
COMP 303 Computer Architecture Lecture 3 Comp 303 Computer Architecture 1 Supporting procedures in computer hardware The execution of a procedure Place parameters in a place where the procedure can access
More informationCS 314 Principles of Programming Languages. Lecture 13
CS 314 Principles of Programming Languages Lecture 13 Zheng Zhang Department of Computer Science Rutgers University Wednesday 19 th October, 2016 Zheng Zhang 1 CS@Rutgers University Class Information Reminder:
More informationTopic 7: Activation Records
Topic 7: Activation Records Compiler Design Prof. Hanjun Kim CoreLab (Compiler Research Lab) POSTECH 1 Storage Organization Stack Free Memory Heap Static Code 2 ELF file format example Executable Object
More informationRun-time Environments - 2
Run-time Environments - 2 Y.N. Srikant Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of the Lecture n What is run-time
More informationCS 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 informationECE232: Hardware Organization and Design
ECE232: Hardware Organization and Design Lecture 6: Procedures Adapted from Computer Organization and Design, Patterson & Hennessy, UCB Overview Procedures have different names in different languages Java:
More informationCA Compiler Construction
CA4003 - Compiler Construction David Sinclair When procedure A calls procedure B, we name procedure A the caller and procedure B the callee. A Runtime Environment, also called an Activation Record, is
More informationModule 27 Switch-case statements and Run-time storage management
Module 27 Switch-case statements and Run-time storage management In this module we will discuss the pending constructs in generating three-address code namely switch-case statements. We will also discuss
More informationCode Generation. Lecture 19
Code Generation Lecture 19 Lecture Outline Topic 1: Basic Code Generation The MIPS assembly language A simple source language Stack-machine implementation of the simple language Topic 2: Code Generation
More informationCS 61C: Great Ideas in Computer Architecture (Machine Structures) More MIPS Machine Language
CS 61C: Great Ideas in Computer Architecture (Machine Structures) More MIPS Machine Language Instructors: Randy H. Katz David A. PaGerson hgp://inst.eecs.berkeley.edu/~cs61c/sp11 1 2 Machine Interpreta4on
More informationhnp://
The bots face off in a tournament against one another and about an equal number of humans, with each player trying to score points by elimina&ng its opponents. Each player also has a "judging gun" in addi&on
More informationLectures 5. Announcements: Today: Oops in Strings/pointers (example from last time) Functions in MIPS
Lectures 5 Announcements: Today: Oops in Strings/pointers (example from last time) Functions in MIPS 1 OOPS - What does this C code do? int foo(char *s) { int L = 0; while (*s++) { ++L; } return L; } 2
More informationMemory Management and Run-Time Systems
TDDD55 Compilers and Interpreters TDDB44 Compiler Construction Memory Management and Run-Time Systems Part of the Attribute Grammar Material Presented at the Beginning of this Lecture Peter Fritzson IDA,
More informationPlan. Regression testing: Demo of how to use the regress.sh script.
Plan PA3 and PA4 Look at PA3 peer reviews and some code. PA3 demos Make sure to indicate group(s) you were in and groups you are building off of in README. You must cite other people s code if you use
More informationStack Frames. September 2, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 September 2, / 15
Stack Frames Geoffrey Brown Bryce Himebaugh Indiana University September 2, 2016 Geoffrey Brown, Bryce Himebaugh 2015 September 2, 2016 1 / 15 Outline Preserving Registers Saving and Restoring Registers
More informationLecture 5: Procedure Calls
Lecture 5: Procedure Calls Today s topics: Procedure calls and register saving conventions 1 Example Convert to assembly: while (save[i] == k) i += 1; i and k are in $s3 and $s5 and base of array save[]
More informationLecture Outline. Topic 1: Basic Code Generation. Code Generation. Lecture 12. Topic 2: Code Generation for Objects. Simulating a Stack Machine
Lecture Outline Code Generation Lecture 12 Topic 1: Basic Code Generation The MIPS assembly language A simple source language Stack-machine implementation of the simple language Topic 2: Code Generation
More informationMIPS Functions and Instruction Formats
MIPS Functions and Instruction Formats 1 The Contract: The MIPS Calling Convention You write functions, your compiler writes functions, other compilers write functions And all your functions call other
More informationSystems I. Machine-Level Programming V: Procedures
Systems I Machine-Level Programming V: Procedures Topics abstraction and implementation IA32 stack discipline Procedural Memory Usage void swap(int *xp, int *yp) int t0 = *xp; int t1 = *yp; *xp = t1; *yp
More informationCalling Conventions. Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University. See P&H 2.8 and 2.12
Calling Conventions Hakim Weatherspoon CS 3410, Spring 2012 Computer Science Cornell University See P&H 2.8 and 2.12 Goals for Today Calling Convention for Procedure Calls Enable code to be reused by allowing
More informationProject. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace
Project there are a couple of 3 person teams regroup or see me or forever hold your peace a new drop with new type checking is coming using it is optional 1 Compiler Architecture source code Now we jump
More informationRegion of memory managed with stack discipline Grows toward lower addresses. Register %esp contains lowest stack address = address of top element
Machine Representa/on of Programs: Procedures Instructors: Sanjeev Se(a 1 IA32 Stack Region of memory managed with stack discipline Grows toward lower addresses Stack BoGom Increasing Addresses Register
More informationSystem Software Assignment 1 Runtime Support for Procedures
System Software Assignment 1 Runtime Support for Procedures Exercise 1: Nested procedures Some programming languages like Oberon and Pascal support nested procedures. 1. Find a run-time structure for such
More informationCompilers and computer architecture: A realistic compiler to MIPS
1 / 1 Compilers and computer architecture: A realistic compiler to MIPS Martin Berger November 2017 Recall the function of compilers 2 / 1 3 / 1 Recall the structure of compilers Source program Lexical
More informationImplementing Subroutines. Outline [1]
Implementing Subroutines In Text: Chapter 9 Outline [1] General semantics of calls and returns Implementing simple subroutines Call Stack Implementing subroutines with stackdynamic local variables Nested
More informationFunctions in MIPS. Functions in MIPS 1
Functions in MIPS We ll talk about the 3 steps in handling function calls: 1. The program s flow of control must be changed. 2. Arguments and return values are passed back and forth. 3. Local variables
More informationToday. Putting it all together
Today! One complete example To put together the snippets of assembly code we have seen! Functions in MIPS Slides adapted from Josep Torrellas, Craig Zilles, and Howard Huang Putting it all together! Count
More informationCSC 2400: Computer Systems. Using the Stack for Function Calls
CSC 24: Computer Systems Using the Stack for Function Calls Lecture Goals Challenges of supporting functions! Providing information for the called function Function arguments and local variables! Allowing
More information: Compiler Design
252-210: Compiler Design 9.0 Data- Flow Analysis Thomas R. Gross Computer Science Department ETH Zurich, Switzerland Global program analysis is a crucial part of all real compilers. Global : beyond a statement
More informationSPIM Procedure Calls
SPIM Procedure Calls 22C:60 Jonathan Hall March 29, 2008 1 Motivation We would like to create procedures that are easy to use and easy to read. To this end we will discuss standard conventions as it relates
More informationCourse 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 informationCode Generation Super Lectures
Code Generation Super Lectures Huge One-Slide Summary Assembly language is untyped, unstructured, low-level and imperative. In a load-store architecture, instructions operate on registers (which are like
More informationCOL728 Minor2 Exam Compiler Design Sem II, Answer all 5 questions Max. Marks: 20
COL728 Minor2 Exam Compiler Design Sem II, 2017-18 Answer all 5 questions Max. Marks: 20 1. Short questions a. Give an example of a program that is not a legal program if we assume static scoping, but
More informationCompiling Techniques
Lecture 10: Introduction to 10 November 2015 Coursework: Block and Procedure Table of contents Introduction 1 Introduction Overview Java Virtual Machine Frames and Function Call 2 JVM Types and Mnemonics
More informationWednesday, October 15, 14. Functions
Functions Terms void foo() { int a, b;... bar(a, b); void bar(int x, int y) {... foo is the caller bar is the callee a, b are the actual parameters to bar x, y are the formal parameters of bar Shorthand:
More informationCode Generation & Parameter Passing
Code Generation & Parameter Passing Lecture Outline 1. Allocating temporaries in the activation record Let s optimize our code generator a bit 2. A deeper look into calling sequences Caller/Callee responsibilities
More informationReview of Activation Frames. FP of caller Y X Return value A B C
Review of Activation Frames In general, activation frames are organized like this: HI LO Bookkeeping/preserved registers I/O parameters Locals and temps RA of caller FP of caller Y X Return value A B C
More informationUNIT 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 informationMachine- 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 informationAn Overview to Compiler Design. 2008/2/14 \course\cpeg421-08s\topic-1a.ppt 1
An Overview to Compiler Design 2008/2/14 \course\cpeg421-08s\topic-1a.ppt 1 Outline An Overview of Compiler Structure Front End Middle End Back End 2008/2/14 \course\cpeg421-08s\topic-1a.ppt 2 Reading
More informationCS 110 Computer Architecture Lecture 6: More MIPS, MIPS Functions
CS 110 Computer Architecture Lecture 6: More MIPS, MIPS Functions Instructor: Sören Schwertfeger http://shtech.org/courses/ca/ School of Information Science and Technology SIST ShanghaiTech University
More informationDo-While Example. In C++ In assembly language. do { z--; while (a == b); z = b; loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero
Do-While Example In C++ do { z--; while (a == b); z = b; In assembly language loop: addi $s2, $s2, -1 beq $s0, $s1, loop or $s2, $s1, $zero 25 Comparisons Set on less than (slt) compares its source registers
More informationLecture 5. Announcements: Today: Finish up functions in MIPS
Lecture 5 Announcements: Today: Finish up functions in MIPS 1 Control flow in C Invoking a function changes the control flow of a program twice. 1. Calling the function 2. Returning from the function In
More informationCSE 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 informationSQLite with a Fine-Toothed Comb. John Regehr Trust-in-So1 / University of Utah
SQLite with a Fine-Toothed Comb John Regehr Trust-in-So1 / University of Utah Feasible states for a system we care about No execu
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 informationECE331: Hardware Organization and Design
ECE331: Hardware Organization and Design Lecture 8: Procedures (cont d), Binary Numbers and Adders Adapted from Computer Organization and Design, Patterson & Hennessy, UCB Review: Procedure Calling Steps
More informationCSE 220: System Fundamentals I Unit 14: MIPS Assembly: Multi-dimensional Arrays. Kevin McDonnell Stony Brook University CSE 220
CSE 220: System Fundamentals I Unit 14: MIPS Assembly: Multi-dimensional Arrays 1 Memory Alignment Perhaps at some point in your MIPS assembly programming you tried to perform a lw and received an error
More informationChapter 9 :: Subroutines and Control Abstraction
Chapter 9 :: Subroutines and Control Abstraction Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier 1 Chapter09_Subroutines_and_Control_Abstraction_4e - Tue November
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 informationLecture Outline. Code Generation. Lecture 30. Example of a Stack Machine Program. Stack Machines
Lecture Outline Code Generation Lecture 30 (based on slides by R. Bodik) Stack machines The MIPS assembly language The x86 assembly language A simple source language Stack-machine implementation of the
More informationMemory Usage 0x7fffffff. stack. dynamic data. static data 0x Code Reserved 0x x A software convention
Subroutines Why we use subroutines more modular program (small routines, outside data passed in) more readable, easier to debug code reuse i.e. smaller code space Memory Usage A software convention stack
More informationRun-time Environments
Run-time Environments Status We have so far covered the front-end phases Lexical analysis Parsing Semantic analysis Next come the back-end phases Code generation Optimization Register allocation Instruction
More informationRun-time Environments
Run-time Environments Status We have so far covered the front-end phases Lexical analysis Parsing Semantic analysis Next come the back-end phases Code generation Optimization Register allocation Instruction
More informationCode Generation. Lecture 30
Code Generation Lecture 30 (based on slides by R. Bodik) 11/14/06 Prof. Hilfinger CS164 Lecture 30 1 Lecture Outline Stack machines The MIPS assembly language The x86 assembly language A simple source
More informationLecture 5: Procedure Calls
Lecture 5: Procedure Calls Today s topics: Memory layout, numbers, control instructions Procedure calls 1 Memory Organization The space allocated on stack by a procedure is termed the activation record
More informationLecture 4: Instruction Set Design/Pipelining
Lecture 4: Instruction Set Design/Pipelining Instruction set design (Sections 2.9-2.12) control instructions instruction encoding Basic pipelining implementation (Section A.1) 1 Control Transfer Instructions
More informationCompiler Design Spring 2018
Compiler Design Spring 2018 Thomas R. Gross Computer Science Department ETH Zurich, Switzerland 1 Logistics Lecture Tuesdays: 10:15 11:55 Thursdays: 10:15 -- 11:55 In ETF E1 Recitation Announced later
More informationBranch Addressing. Jump Addressing. Target Addressing Example. The University of Adelaide, School of Computer Science 28 September 2015
Branch Addressing Branch instructions specify Opcode, two registers, target address Most branch targets are near branch Forward or backward op rs rt constant or address 6 bits 5 bits 5 bits 16 bits PC-relative
More informationOutline. Review: Assembly/Machine Code View. Processor State (x86-64, Par2al) Condi2on Codes (Explicit Se^ng: Compare) Condi2on Codes (Implicit Se^ng)
Outline Machine- Level Representa2on: Control CSCI 2021: Machine Architecture and Organiza2on Pen- Chung Yew Department Computer Science and Engineering University of Minnesota Control: Condi2on codes
More informationCS558 Programming Languages
CS558 Programming Languages Fall 2016 Lecture 4a Andrew Tolmach Portland State University 1994-2016 Pragmatics of Large Values Real machines are very efficient at handling word-size chunks of data (e.g.
More informationCompilers 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 informationThis section provides some reminders and some terminology with which you might not be familiar.
Chapter 3: Functions 3.1 Introduction The previous chapter assumed that all of your Bali code would be written inside a sole main function. But, as you have learned from previous programming courses, modularizing
More informationSubroutines. int main() { int i, j; i = 5; j = celtokel(i); i = j; return 0;}
Subroutines Also called procedures or functions Example C code: int main() { int i, j; i = 5; j = celtokel(i); i = j; return 0;} // subroutine converts Celsius to kelvin int celtokel(int i) { return (i
More informationImplementing Functions at the Machine Level
Subroutines/Functions Implementing Functions at the Machine Level A subroutine is a program fragment that... Resides in user space (i.e, not in OS) Performs a well-defined task Is invoked (called) by a
More informationCode 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 informationLecture 6: Assembly Programs
Lecture 6: Assembly Programs Today s topics: Procedures Examples Large constants The compilation process A full example 1 Procedures Local variables, AR, $fp, $sp Scratchpad and saves/restores, $fp Arguments
More informationCIT Week13 Lecture
CIT 3136 - Week13 Lecture Runtime Environments During execution, allocation must be maintained by the generated code that is compatible with the scope and lifetime rules of the language. Typically there
More informationProject 3 Due October 21, 2015, 11:59:59pm
Project 3 Due October 21, 2015, 11:59:59pm 1 Introduction In this project, you will implement RubeVM, a virtual machine for a simple bytecode language. Later in the semester, you will compile Rube (a simplified
More informationThe remote testing experiment. It works! Code Generation. Lecture 12. Remote testing. From the cs164 newsgroup
The remote testing experiment. It works! Coverage - Score plot 0.9 Code Generation 0.7 0.6 Lecture 12 Coverage 0.5 0.4 0.3 Series1 Poly. (Series1) 0.2 0.1 0 0 10 20 30 40 50 Score CS 164 Lecture 14 Fall
More informationParsing Scheme (+ (* 2 3) 1) * 1
Parsing Scheme + (+ (* 2 3) 1) * 1 2 3 Compiling Scheme frame + frame halt * 1 3 2 3 2 refer 1 apply * refer apply + Compiling Scheme make-return START make-test make-close make-assign make- pair? yes
More informationThe compilation process is driven by the syntactic structure of the program as discovered by the parser
Semantic Analysis The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the program based on its syntactic structure
More information! What do we care about? n Fast program execution. n Efficient memory usage. n Avoid memory fragmentation. n Maintain data locality
Problem Chapter 10 Memory Model for Program Execution Original slides by Chris Wilcox, Colorado State University How do we allocate memory during the execution of a program written in C?! Programs need
More informationChapter 8 :: Subroutines and Control Abstraction. Final Test. Final Test Review Tomorrow
Chapter 8 :: Subroutines and Control Abstraction Programming Language Pragmatics Michael L. Scott Administrative Notes Final Test Thursday, August 3 2006 at 11:30am No lecture before or after the mid-term
More informationCSC 8400: Computer Systems. Using the Stack for Function Calls
CSC 84: Computer Systems Using the Stack for Function Calls Lecture Goals Challenges of supporting functions! Providing information for the called function Function arguments and local variables! Allowing
More informationCompiler Construction I
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Compiler Construction I Dr. Michael Petter, Dr. Axel Simon SoSe 2014 1 / 104 Topic: Semantic Analysis 2 / 104 Topic: Code Synthesis 3 / 104 Generating
More informationChapter 10 Memory Model for Program Execution. Problem
Chapter 10 Memory Model for Program Execution Original slides by Chris Wilcox, Colorado State University Problem How do we allocate memory during the execution of a program written in C?! Programs need
More informationLecture 3: C Programm
0 3 E CS 1 Lecture 3: C Programm ing Reading Quiz Note the intimidating red border! 2 A variable is: A. an area in memory that is reserved at run time to hold a value of particular type B. an area in memory
More informationECE260: Fundamentals of Computer Engineering. Supporting Procedures in Computer Hardware
Supporting Procedures in Computer Hardware James Moscola Dept. of Engineering & Computer Science York College of Pennsylvania Based on Computer Organization and Design, 5th Edition by Patterson & Hennessy
More informationDigital System Design Using Verilog. - Processing Unit Design
Digital System Design Using Verilog - Processing Unit Design 1.1 CPU BASICS A typical CPU has three major components: (1) Register set, (2) Arithmetic logic unit (ALU), and (3) Control unit (CU) The register
More informationProgramming Languages: Lecture 12
1 Programming Languages: Lecture 12 Chapter 10: Implementing Subprograms Jinwoo Kim jwkim@jjay.cuny.edu Chapter 10 Topics 2 The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing
More informationScope, Functions, and Storage Management
Scope, Functions, and Storage Management Implementing Functions and Blocks cs3723 1 Simplified Machine Model (Compare To List Abstract Machine) Registers Code Data Program Counter (current instruction)
More informationProgramming Languages
Programming Languages Tevfik Koşar Lecture - XX April 4 th, 2006 1 Roadmap Subroutines Allocation Strategies Calling Sequences Parameter Passing Generic Subroutines Exception Handling Co-routines 2 1 Review
More information