Procedure and Function Calls, Part II. Comp 412 COMP 412 FALL Chapter 6 in EaC2e. target code. source code Front End Optimizer Back End

Size: px
Start display at page:

Download "Procedure and Function Calls, Part II. Comp 412 COMP 412 FALL Chapter 6 in EaC2e. target code. source code Front End Optimizer Back End"

Transcription

1 COMP 412 FALL 2017 Procedure and Function Calls, Part II Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit permission to make copies of these materials for their personal use. Faculty from other educational institutions may use these materials for nonprofit educational purposes, provided this copyright notice is preserved. Chapter 6 in EaC2e

2 Linkage Convention: High-Level View The linkage must: Preserve & protect the caller s environment from callee (& its callees) For example, it must preserve values in registers that are live across the call Create a new environment for the callee (new name space) At runtime, it creates a local data area for the callee & ties it to the context Map names & resources from caller into the callee, as needed To accomplish these goals: Convention divides responsibility between caller & callee Caller & callee must use the same set of conventions Implies limited opportunities for customization & optimization fee Callers fie We expect compiled code to work even when created with different compilers, perhaps in different languages foe Callee foe must operate in multiple distinct calling contexts. COMP 412, Fall

3 Linkage Convention A procedure or function has two distinct representations Code to implement the procedure Code for all the statements Code to implement the linkage convention Labels on entry points and return points Use name mangling to create consistent labels Data to represent an invocation Activation record (AR) Local data + saved context of caller Control information Storage to preserve caller s env t Chain ARs together to create context Static data area (name prolog prolog fee s AR foe s AR post-return epilog #fee_: #foe_: epilog COMP 412, Fall

4 The Meta Issue One of the most difficult aspects of understanding how compilers work is keeping track of what happens at compiler-design time, compiler-build time, compile time, and run time. At compile time, the compiler emits code for the application program, including all of its procedures (and their prologs, epilogs, & sequences) The compiler uses symbol tables to keep track of names Those tables are compile-time data structures At runtime, those sequences (prolog, epilog, pre-call, & post-return) create, populate, use, and destroy ARs for invocations of procedures The running code stores data (both program data and control data) in the ARs Those ARs are run-time data structures To confuse matters further, the compiler may preserve the symbol tables so that the runtime debugging environment can locate variables and values, and locate the various data areas and the ARs COMP 412, Fall

5 Procedure Linkages Standard Procedure Linkage procedure main prolog z = a*a + b*b x = sqrt( y,z) L: pre-call post-return epilog caller function sqrt prolog epilog callee Each procedure has A standard prolog A standard epilog Each call uses A pre-call sequence A post-return sequence The code for the pre-call and post-return sequences must be completely predictable from the call site. It depends on the number & the types of the actual parameters. COMP Note: The 412, gap Fall between 2017 pre-call & post-return code is artistic license. 4

6 n k Activation Record Basics ARP Activation Record Pointer In most systems, Activation Records have a similar layout 1 0 space for parameters Space for parameters to the current procedure 0 register save area slot for return value Contents of saved registers If function, space for return value slot for return address Address to resume caller ARP slot for addressability slot for caller s ARP Help with non-local access To restore caller s AR on return If ARs are stack allocated, the stack grows in this direction 0 1 m space for local variables Space for local variables, temporaries, & spills One AR for each invocation of a procedure One COMP register 412, Fall dedicated 2017 to hold the current ARP 5

7 Procedure Linkages Pre-call Sequence Sets up callee s basic AR Helps preserve its own environment prolog pre-call prolog The Details Allocates space for the callee s AR except space for local variables Evaluates each parameter & stores value or address Saves return address & caller s ARP into callee s AR Addressability maintenance, if necessary Saves any caller-save registers that are live across the call Save into space in caller s AR Jumps to address of callee s prolog code post-return epilog epilog Where do parameter values reside? Conventional wisdom says: Pre-call sequence is a lot of work In registers (First 3 or 4) COMP 412, Fall 2017 In callee s AR (the rest) 6

8 Procedure Linkages Post-return Sequence Finishes restoring caller s environment Places any value back where it belongs e.g., any reference parameter or global that is kept in a register in the callee prolog pre-call post-return epilog The Details Copies return value from AR into a register, if needed Frees the callee s AR If access links are used, this action discards callee s link Restores any caller-save registers Restores any call-by-reference parameters to registers, if needed Also copy back call-by-value/result parameters Continues execution after the call prolog epilog COMP 412, Fall

9 Procedure Linkages Prolog Code Finishes setting up callee s environment Preserves parts of caller s environment that will be disturbed by the callee The Details Preserves any callee-save registers Addressability maintenance, if necessary Allocates space for local data Easiest scenario is to extend the AR Finds any static data areas referenced in the callee Handles any local variable initializations Not any cheaper to say int x = 0; prolog pre-call post-return epilog prolog epilog With heap allocated AR, may need a separate heap object for local variables. COMP 412, Fall 2017 (Must know size of local data area) 8

10 Procedure Linkages Takeaway point: procedure calls have many cycles of overhead. Epilog Code Winds up the business of the callee Starts restoring the caller s environment prolog pre-call prolog The Details Stores return value? Place it, or a pointer, in the return value slot of the caller s AR 1 Other schemes are equally feasible Restore callee-save registers, as needed Addressability maintenance, if necessary Free space for local data, if necessary (on the heap) Restore return address & caller s ARP from AR Jump to the return address post-return epilog epilog If ARs are stack allocated, deallocation is implicit (& cheap) when stacktop is reset to its pre-call value. 1 COMP Return 412, value Fall 2017 needs storage that survives the call 9

11 Where Do Saved Registers Go? p saves its own registers in its own RSA ARP p saves its spills in its own local data area. space for parameters register save area slot for return value slot for return address slot for addressability slot for caller s ARP space for local variables Space for parameters to the current procedure Contents of saved registers If function, space for return value Address to resume caller Help with non-local access To restore caller s AR on return Space for local variables, temporaries, & spills If p always saves registers into its own AR, then the compiler knows how much space to reserve in the AR for One those AR purposes for each invocation p s own of caller a procedure saves registers (in prolog), p s own callee saves registers (in precall when One COMP p register calls 412, Fall q), dedicated 2017 and p s own to hold spills the in the current register ARP allocator run on p. (prolog patched after allocation) 10

12 Where Do Parameters Go? ARP Parameters from callee go here space for parameters register save area slot for return value slot for return address slot for addressability slot for caller s ARP Space for parameters to the current procedure Contents of saved registers If function, space for return value Address to resume caller Help with non-local access To restore caller s AR on return Parameters passed to another call go here space for local variables space for parameters Space for local variables, temporaries, & spills Callee s activation record COMP 412, Fall

13 Assume, for the moment, an Algol-60-like environment where the AR is dead after the return. Creating and Destroying Activation Records The activation record embodies the runtime state of the procedure How are ARs created and destroyed? Procedure call must allocate & initialize (preserve caller s world) Return must dismantle environment (and restore caller s world) Caller & callee must collaborate on the problems Caller alone knows some of the necessary state Return address, parameter values, access to other scopes Callee alone knows the rest Size of local data area (with spills), registers it will use Their collaboration takes the form of a linkage convention 1. Linkage convention is defined at compiler design time 2. Linkage code is emitted at compile time COMP 412, Fall Linkage code executes at runtime, when a procedure is called. 12

14 Storing Activation Records What is this stack? If activation records are stored on the stack Easy to extend simply bump top of stack pointer Caller & callee share responsibility Algol-60 rules Caller can push parameters, space for registers, return value slot, return address, addressability info, & its own ARP Callee can push space for local variables (fixed & variable size) COMP 412, Fall

15 Lecture 21, Storage Layout (slide 9) Address Space Layout Most language runtimes layout the address space in a similar way Stacks Growth space for stacks Heap Code Globals Java Memory Layout Pieces (stack, heap, code, & globals) may move, but all will be there Stack and heap grow toward each other (if heap grows) AR for fee AR for fie AR for foe AR for fie AR for fum AR for foe New ARs LIFO Runtime Stack COMP 412, Fall

16 Storing Activation Records If activation records are stored on the stack Easy to extend simply bump top of stack pointer Caller & callee share responsibility Caller can push parameters, space for registers, return value slot, return address, addressability info, & its own ARP Callee can push space for local variables (fixed & variable size) If activation records are stored on the heap Hard to extend Several options Caller passes everything in registers; callee allocates & fills AR Store parameters, return address, etc., in caller s AR! Store callee s AR size in a defined static constant Algol-60 rules ML rules Name mangling, again COMP 412, Fall

17 Address Space Layout Most language runtimes layout the address space in a similar way Stacks Growth space for stacks AR for fee AR for foe AR for fie AR for fie AR for fum AR for fie Code Globals Java Memory Layout Pieces (stack, heap, code, & globals) may move, but all will be there Stack and heap grow toward each other (if heap grows) COMP 412, Fall

18 Storing Activation Records If activation records are stored on the stack Easy to extend simply bump top of stack pointer Caller & callee share responsibility Caller can push parameters, space for registers, return value slot, return address, addressability info, & its own ARP Callee can push space for local variables (fixed & variable size) If activation records are stored on the heap Hard to extend Several options Caller passes everything in registers; callee allocates & fills AR Store parameters, return address, etc., in caller s AR! Store callee s AR size in a defined static constant Algol-60 rules ML rules Name mangling, again Without recursion, activation records can be static Fortran 66 & 77 COMP 412, Fall

19 Address Space Layout Most language runtimes layout the address space in a similar way Stacks Growth space for stacks HEAP Code Globals Java Memory Layout Pieces (stack, heap, code, & globals) may move, but all will be there Stack and heap grow toward each other (if heap grows) Statically allocated ARs go into the Global data area which we would need to redraw in as a larger area COMP 412, Fall

20 Where Do Variables Live? We have seen ARs, static data areas, global data areas, How does the compiler decide where to place each variable A combination of visibility and lifetime determines that placement Lifetime Scope Location automatic local declaring procedure s AR static any named static data area for its lifetime dynamic any heap Variable length items? Put a descriptor in the natural place & allocate space in AR or in the heap Requires one level of indirection (a pointer ) Allows uniform addressability In AR if AR is extendible On heap if AR is not extendible Automatic: Static: Lifetime matches procedure activation Lifetime may be as long as entire execution Dynamic: Lifetime is under program control & not COMP 412, Fall 2017 known at compile time 19

21 How Do We Address Variables? Local variables Need a mechanism to locate the local data area in appropriate AR Represent the variable as a static coordinate: <level, offset> Level is the lexical nesting level of the procedure that declares the variable Offset is the offset within the AR s local data area for that procedure Mechanism takes static coordinate to run-time address Static variables (including global) Need a base-address, offset pair (mangled name for base address) Generate a load of the base address Add the offset and load the value (loadai if offset is small enough) Must be recognizable as non-local case (represent differently) Dynamic variables Programmer manages access through pointers, names, COMP 412, Fall

22 How Do We Address Variables? Local variable of current procedure Convert to static coordinate Add offset to r ARP and load Local variable in surrounding lexical scope Convert to static coordinate Convert level to ARP for procedure at that level Add offset to that ARP and load Must find the correct AR Local variables of surrounding scopes, static variables at various scopes, and global variables are often called free variables in the PL literature COMP 412, Fall

23 Finding the Correct AR Each AR has a field for addressability ARP r ARP parameters registers return value return address caller s ARP addressability local variables r ARP is a physical register, dedicated to holding the ARP One common scheme uses access links Each AR has a link to the AR of its lexical ancestor (surrounding scope) Lexical ancestor need not be the procedure that called it Compiler can use static coordinate to generate code that chases the chain of access links to find the correct AR Reference to <p, 16> runs up chain to find level p s ARP, then adds 16 Number of derefences is (c p), where c is the current lexical level Cost of access is proportional to lexical distance between c and p COMP 412, Fall

24 Using Access Links Finding the Correct AR parameters parameters parameters registers return value registers return value registers return value ARP return address caller s ARP return address caller s ARP return address caller s ARP addressability addressability addressability local variables local variables local variables AR for foe AR for fie AR for fee procedure fee { procedure fie { procedure foe { } call foe() } call fie() } Static Coord Generated Code <3, 8> loadai r ARP,8 => r 10 <2,12> loadai r ARP,4 => r 10 loadai r ARP,12 => r 10 <1,16> loadai r ARP,4 => r 10 loadai r ARP,4 => r 10 loadai r ARP,12 => r 10 COMP 412, Fall

25 Finding the Correct AR Maintaining Access Links ARP parameters registers return value return address caller s ARP addressability local variables At each call: In pre-call sequence, caller must find the appropriate ARP Assume caller is at level k Callee at level k+1 Use current ARP as link Callee at level j, 0 < j k Walk up access link chain to level j-1 Use that ARP as link Callee is global (e.g., at level 0) Use NULL as link Caller & callee share no lexical context As long as the code is correct Caller s chain will be long enough Callee cannot walk off end of chain COMP 412, Fall

26 Finding the Correct AR Each AR has a field for addressability ARP parameters registers return value return address caller s ARP addressability local variables The Linkage Can Also Use A Display Global vector of pointers to the ARs of surrounding procedures Any nameable AR can be reached in constant time Current AR is reached through ARP Surrounding scopes are reached by treating display as a vector Reference to <p, 16>, for p < k, looks up the level p ARP in the display and adds 16 to it Cost of access is constant COMP 412, Fall

27 Using A Display Finding the Correct AR _display_: level 1 level 2 level 3 ARP parameters registers return value return address caller s ARP parameters registers return value return address caller s ARP parameters registers return value return address caller s ARP addressability addressability addressability local variables local variables local variables AR for foe AR for fie AR for fee procedure fee { procedure fie { procedure foe { } call foe() } call fie() } Static Coord Generated Code <3, 8> loadai r ARP,8 => r 10 <2,12> loadai _display_ => r 10 loadai r 10,4 => r 10 loadai r 10,12 => r 10 <1,16> loadi _display_ => r 10 load r 10 => r 10 loadai r ARP,12 => r 10 COMP 412, Fall

28 Finding the Correct AR ARP parameters registers return value return address caller s ARP addressability local variables Maintaining A Display Display maintenance is simple, as long as the compiler writer is willing to waste one display slot In prolog of each level j procedure Save the level j display entry into the procedure s own AR (addressability slot) Store current ARP into level j display slot In epilog of each level j procedure Restore old level j display entry from the current AR s addressability slot Simple, clean, and constant time COMP 412, Fall

29 Access Links versus Display Access Links Maintenance adds overhead to each call Overhead depends on nesting Adds overhead on each reference to a local in surrounding scope Overhead depends on nesting If ARs outlive procedure, access links still work Access links between ARs ensures that they are live (& uncollected) Display Maintenance adds overhead to each call & return Overhead is constant Adds overhead on each reference to a local in surrounding scope Overhead is constant If ARs outlive procedure, display links are not preserved Need to preserve them in a way that ensures ARs are live (collector issue) Your mileage will vary Depends on ratio of non-local accesses to calls Depends on demand for registers (available register to hold _display_?) COMP 412, Fall

30 Access Links and Displays The Meta Issue Decision to use one or the other is made when the linkage is designed May be beyond the control of the compiler writer Lexical levels for procedures and variables are determined in parsing Requires the use of a lexically scoped symbol table Code to maintain access link or display is emitted at compile time When compiler generates a procedure or a call, it emits the code Access links: Lexical levels are known at compile time, so compiler can generate the code to find a level j display (knows how far to run up the chain) Display: Lexical levels are known at compile time, so compiler can generate the save (in prolog) and restore (in epilog) Either an access link or a display is a runtime object Exists at runtime, Points to ARs, which are runtime objects COMP 412, Fall

Runtime Support for Algol-Like Languages Comp 412

Runtime Support for Algol-Like Languages Comp 412 COMP 412 FALL 2018 Runtime Support for Algol-Like Languages Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students

More information

Arrays and Functions

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

More information

The Procedure Abstraction

The Procedure Abstraction The Procedure Abstraction Procedure Abstraction Begins Chapter 6 in EAC The compiler must deal with interface between compile time and run time Most of the tricky issues arise in implementing procedures

More information

Run Time Environment. Procedure Abstraction. The Procedure as a Control Abstraction. The Procedure as a Control Abstraction

Run Time Environment. Procedure Abstraction. The Procedure as a Control Abstraction. The Procedure as a Control Abstraction Procedure Abstraction Run Time Environment Records Procedure Linkage Name Translation and Variable Access Copyright 2010, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at

More information

Naming in OOLs and Storage Layout Comp 412

Naming in OOLs and Storage Layout Comp 412 COMP 412 FALL 2018 Naming in OOLs and Storage Layout Comp 412 source IR IR target Front End Optimizer Back End Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in

More information

Run Time Environment. Activation Records Procedure Linkage Name Translation and Variable Access

Run Time Environment. Activation Records Procedure Linkage Name Translation and Variable Access Run Time Environment Activation Records Procedure Linkage Name Translation and Variable Access Copyright 2015, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University

More information

Runtime Support for OOLs Object Records, Code Vectors, Inheritance Comp 412

Runtime Support for OOLs Object Records, Code Vectors, Inheritance Comp 412 COMP 412 FALL 2017 Runtime Support for OOLs Object Records, Code Vectors, Inheritance Comp 412 source IR Front End Optimizer Back End IR target Copyright 2017, Keith D. Cooper & Linda Torczon, all rights

More information

Optimizer. Defining and preserving the meaning of the program

Optimizer. Defining and preserving the meaning of the program Where are we? Well understood Engineering Source Code Front End IR Optimizer IR Back End Machine code Errors The latter half of a compiler contains more open problems, more challenges, and more gray areas

More information

Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention

Separate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention Runtime Environment The Procedure Abstraction and Separate Compilation Topics we will cover The procedure abstraction and linkage conventions Runtime storage convention Non-local data access (brief) These

More information

CS415 Compilers. Procedure Abstractions. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University

CS415 Compilers. Procedure Abstractions. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University CS415 Compilers Procedure Abstractions These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University Where are we? Well understood Engineering Source Code

More information

What about Object-Oriented Languages?

What about Object-Oriented Languages? What about Object-Oriented Languages? What is an OOL? A language that supports object-oriented programming How does an OOL differ from an ALL? (ALGOL-Like Language) Data-centric name scopes for values

More information

CSE 504: Compiler Design. Runtime Environments

CSE 504: Compiler Design. Runtime Environments Runtime Environments Pradipta De pradipta.de@sunykorea.ac.kr Current Topic Procedure Abstractions Mechanisms to manage procedures and procedure calls from compiler s perspective Runtime Environment Choices

More information

Concepts Introduced in Chapter 7

Concepts Introduced in Chapter 7 Concepts Introduced in Chapter 7 Storage Allocation Strategies Static Stack Heap Activation Records Access to Nonlocal Names Access links followed by Fig. 7.1 EECS 665 Compiler Construction 1 Activation

More information

The Processor Memory Hierarchy

The Processor Memory Hierarchy Corrected COMP 506 Rice University Spring 2018 The Processor Memory Hierarchy source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved.

More information

CS 406/534 Compiler Construction Intermediate Representation and Procedure Abstraction

CS 406/534 Compiler Construction Intermediate Representation and Procedure Abstraction CS 406/534 Compiler Construction Intermediate Representation and Procedure Abstraction Prof. Li Xu Dept. of Computer Science UMass Lowell Fall 2004 Part of the course lecture notes are based on Prof. Keith

More information

Run-time Environments

Run-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 information

Run-time Environments

Run-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 information

Generating Code for Assignment Statements back to work. Comp 412 COMP 412 FALL Chapters 4, 6 & 7 in EaC2e. source code. IR IR target.

Generating Code for Assignment Statements back to work. Comp 412 COMP 412 FALL Chapters 4, 6 & 7 in EaC2e. source code. IR IR target. COMP 412 FALL 2017 Generating Code for Assignment Statements back to work Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights

More information

Intermediate Representations

Intermediate Representations Most of the material in this lecture comes from Chapter 5 of EaC2 Intermediate Representations Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP

More information

Runtime management. CS Compiler Design. The procedure abstraction. The procedure abstraction. Runtime management. V.

Runtime management. CS Compiler Design. The procedure abstraction. The procedure abstraction. Runtime management. V. Runtime management CS3300 - Compiler Design Runtime management V Krishna Nandivada IIT Madras Copyright c 2001 by Antony L Hosking Permission to make digital or hard copies of part or all of this work

More information

The Procedure Abstraction Part I Basics

The Procedure Abstraction Part I Basics The Procedure Abstraction Part I Basics Procedure Abstraction The compiler must deal with interface between compile time and run time Most of the tricky issues arise in implementing procedures Procedures

More information

The Procedure Abstraction Part I: Basics

The Procedure Abstraction Part I: Basics The Procedure Abstraction Part I: Basics Procedure Abstraction Begins Chapter 6 in EAC The compiler must deal with interface between compile time and run time Most of the tricky issues arise in implementing

More information

! Those values must be stored somewhere! Therefore, variables must somehow be bound. ! How?

! Those values must be stored somewhere! Therefore, variables must somehow be bound. ! How? A Binding Question! Variables are bound (dynamically) to values Subprogram Activation! Those values must be stored somewhere! Therefore, variables must somehow be bound to memory locations! How? Function

More information

The Software Stack: From Assembly Language to Machine Code

The Software Stack: From Assembly Language to Machine Code COMP 506 Rice University Spring 2018 The Software Stack: From Assembly Language to Machine Code source code IR Front End Optimizer Back End IR target code Somewhere Out Here Copyright 2018, Keith D. Cooper

More information

Sustainable Memory Use Allocation & (Implicit) Deallocation (mostly in Java)

Sustainable Memory Use Allocation & (Implicit) Deallocation (mostly in Java) COMP 412 FALL 2017 Sustainable Memory Use Allocation & (Implicit) Deallocation (mostly in Java) Copyright 2017, Keith D. Cooper & Zoran Budimlić, all rights reserved. Students enrolled in Comp 412 at Rice

More information

Run-time Environments. Lecture 13. Prof. Alex Aiken Original Slides (Modified by Prof. Vijay Ganesh) Lecture 13

Run-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 information

Register Allocation. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice.

Register Allocation. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice. Register Allocation Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP at Rice. Copyright 00, Keith D. Cooper & Linda Torczon, all rights reserved.

More information

Example. program sort; var a : array[0..10] of integer; procedure readarray; : function partition (y, z :integer) :integer; var i, j,x, v :integer; :

Example. program sort; var a : array[0..10] of integer; procedure readarray; : function partition (y, z :integer) :integer; var i, j,x, v :integer; : Runtime Environment Relationship between names and data objects (of target machine) Allocation & de-allocation is managed by run time support package Each execution of a procedure is an activation of the

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

CS 314 Principles of Programming Languages

CS 314 Principles of Programming Languages CS 314 Principles of Programming Languages Lecture 13: Names, Scopes and Bindings Zheng (Eddy) Zhang Rutgers University February 28, 2018 Review: Names, Scopes and Binding What s in a name? Each name means

More information

Implementing Subprograms

Implementing Subprograms Implementing Subprograms In Text: Chapter 10 Slide 1 Implementing Subprograms Call - Save registers - provide storage for parameters - provide storage for locals - save execution status of caller - provide

More information

Procedure and Object- Oriented Abstraction

Procedure and Object- Oriented Abstraction Procedure and Object- Oriented Abstraction Scope and storage management cs5363 1 Procedure abstractions Procedures are fundamental programming abstractions They are used to support dynamically nested blocks

More information

Parsing II Top-down parsing. Comp 412

Parsing II Top-down parsing. Comp 412 COMP 412 FALL 2018 Parsing II Top-down parsing Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled

More information

Chapter 10 Implementing Subprograms

Chapter 10 Implementing Subprograms Chapter 10 Implementing Subprograms The General Semantics of Calls and Returns - Definition: The subprogram call and return operations of a language are together called its subprogram linkage Implementing

More information

Handling Assignment Comp 412

Handling Assignment Comp 412 COMP 412 FALL 2018 Handling Assignment Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp

More information

Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004

Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004 Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004 CS 314, LS,BR,LTM: Scope and Memory 1 Review Functions as first-class objects What can you do with an integer?

More information

CSE 504. Expression evaluation. Expression Evaluation, Runtime Environments. One possible semantics: Problem:

CSE 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 information

Run-time Environments - 2

Run-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 information

CA Compiler Construction

CA 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 information

Implementing Subprograms

Implementing Subprograms 1 Implementing Subprograms CS 315 Programming Languages Pinar Duygulu Bilkent University CS315 Programming Languages Pinar Duygulu The General Semantics of Calls and Returns 2 The subprogram call and return

More information

Local Optimization: Value Numbering The Desert Island Optimization. Comp 412 COMP 412 FALL Chapter 8 in EaC2e. target code

Local Optimization: Value Numbering The Desert Island Optimization. Comp 412 COMP 412 FALL Chapter 8 in EaC2e. target code COMP 412 FALL 2017 Local Optimization: Value Numbering The Desert Island Optimization Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2017, Keith D. Cooper & Linda Torczon,

More information

Chapter 9. Def: The subprogram call and return operations of a language are together called its subprogram linkage

Chapter 9. Def: The subprogram call and return operations of a language are together called its subprogram linkage Def: The subprogram call and return operations of a language are together called its subprogram linkage Implementing FORTRAN 77 Subprograms Call Semantics: 1. Save the execution status of the caller 2.

More information

Special Topics: Programming Languages

Special Topics: Programming Languages Lecture #17 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 17 Lecture #17 1 Slide 1 Runtime Representations Variable Names Environment L-values Scope, Extent

More information

Code Shape Comp 412 COMP 412 FALL Chapters 4, 5, 6 & 7 in EaC2e. source code. IR IR target. code. Front End Optimizer Back End

Code Shape Comp 412 COMP 412 FALL Chapters 4, 5, 6 & 7 in EaC2e. source code. IR IR target. code. Front End Optimizer Back End COMP 412 FALL 2018 Code Shape Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at

More information

Intermediate Representations & Symbol Tables

Intermediate Representations & Symbol Tables Intermediate Representations & Symbol Tables Copyright 2014, Pedro C. Diniz, all rights reserved. Students enrolled in the Compilers class at the University of Southern California have explicit permission

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

Module 27 Switch-case statements and Run-time storage management

Module 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 information

Run-Time Data Structures

Run-Time Data Structures Run-Time Data Structures Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers, it is used for:

More information

Computing Inside The Parser Syntax-Directed Translation. Comp 412 COMP 412 FALL Chapter 4 in EaC2e. source code. IR IR target.

Computing Inside The Parser Syntax-Directed Translation. Comp 412 COMP 412 FALL Chapter 4 in EaC2e. source code. IR IR target. COMP 412 FALL 2017 Computing Inside The Parser Syntax-Directed Translation Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights

More information

Storage in Programs. largest. address. address

Storage in Programs. largest. address. address Storage in rograms Almost all operand storage used by programs is provided by memory. Even though registers are more efficiently accessed by instructions, there are too few registers to hold the stored

More information

Memory Management and Run-Time Systems

Memory 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 information

Compilation /15a Lecture 7. Activation Records Noam Rinetzky

Compilation /15a Lecture 7. Activation Records Noam Rinetzky Compilation 0368-3133 2014/15a Lecture 7 Activation Records Noam Rinetzky 1 Code generation for procedure calls (+ a few words on the runtime system) 2 Code generation for procedure calls Compile time

More information

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Spring 2015 1 Handling Overloaded Declarations Two approaches are popular: 1. Create a single symbol table

More information

Scope, Functions, and Storage Management

Scope, 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 information

Chapter 10. Implementing Subprograms

Chapter 10. Implementing Subprograms Chapter 10 Implementing Subprograms Chapter 10 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables Nested Subprograms

More information

Computing Inside The Parser Syntax-Directed Translation, II. Comp 412

Computing Inside The Parser Syntax-Directed Translation, II. Comp 412 COMP 412 FALL 2018 Computing Inside The Parser Syntax-Directed Translation, II Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights

More information

12/4/18. Outline. Implementing Subprograms. Semantics of a subroutine call. Storage of Information. Semantics of a subroutine return

12/4/18. Outline. Implementing Subprograms. Semantics of a subroutine call. Storage of Information. Semantics of a subroutine return Outline Implementing Subprograms In Text: Chapter 10 General semantics of calls and returns Implementing simple subroutines Call Stack Implementing subroutines with stackdynamic local variables Nested

More information

Implementing Subroutines. Outline [1]

Implementing 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 information

Implementing Control Flow Constructs Comp 412

Implementing Control Flow Constructs Comp 412 COMP 412 FALL 2018 Implementing Control Flow Constructs Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students

More information

Chapter 10. Implementing Subprograms ISBN

Chapter 10. Implementing Subprograms ISBN Chapter 10 Implementing Subprograms ISBN 0-321-33025-0 Chapter 10 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables

More information

Programming Languages: Lecture 12

Programming 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 information

Compilers. 8. Run-time Support. Laszlo Böszörmenyi Compilers Run-time - 1

Compilers. 8. Run-time Support. Laszlo Böszörmenyi Compilers Run-time - 1 Compilers 8. Run-time Support Laszlo Böszörmenyi Compilers Run-time - 1 Run-Time Environment A compiler needs an abstract model of the runtime environment of the compiled code It must generate code for

More information

Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit

Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit Intermediate Representations 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 copies

More information

Chapter 9 :: Subroutines and Control Abstraction

Chapter 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 information

Local Register Allocation (critical content for Lab 2) Comp 412

Local Register Allocation (critical content for Lab 2) Comp 412 Updated After Tutorial COMP 412 FALL 2018 Local Register Allocation (critical content for Lab 2) Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda

More information

Control Abstraction. Hwansoo Han

Control Abstraction. Hwansoo Han Control Abstraction Hwansoo Han Review of Static Allocation Static allocation strategies Code Global variables Own variables (live within an encapsulation - static in C) Explicit constants (including strings,

More information

Run-time Environment

Run-time Environment Run-time Environment Prof. James L. Frankel Harvard University Version of 3:08 PM 20-Apr-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. Storage Organization Automatic objects are

More information

Code Shape Comp 412 COMP 412 FALL Chapters 4, 5, 6 & 7 in EaC2e. source code. IR IR target. code. Front End Optimizer Back End

Code Shape Comp 412 COMP 412 FALL Chapters 4, 5, 6 & 7 in EaC2e. source code. IR IR target. code. Front End Optimizer Back End COMP 412 FALL 2017 Code Shape Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at

More information

Run Time Environments

Run Time Environments Run Time Environments ALSU Textbook Chapter 7.1 7.3 Tsan-sheng Hsu tshsu@iis.sinica.edu.tw http://www.iis.sinica.edu.tw/~tshsu 1 Preliminaries During the execution of a program, the same name in the source

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level

More information

Functions and Procedures

Functions and Procedures Functions and Procedures Function or Procedure A separate piece of code Possibly separately compiled Located at some address in the memory used for code, away from main and other functions (main is itself

More information

Compiler Design. Code Shaping. Hwansoo Han

Compiler Design. Code Shaping. Hwansoo Han Compiler Design Code Shaping Hwansoo Han Code Shape Definition All those nebulous properties of the code that impact performance & code quality Includes code, approach for different constructs, cost, storage

More information

G Programming Languages - Fall 2012

G 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

Chapter 3:: Names, Scopes, and Bindings

Chapter 3:: Names, Scopes, and Bindings Chapter 3:: Names, Scopes, and Bindings Programming Language Pragmatics Michael L. Scott Some more things about NFAs/DFAs We said that a regular expression can be: A character (base case) A concatenation

More information

Programming Languages

Programming Languages Programming Languages Tevfik Koşar Lecture - VIII February 9 th, 2006 1 Roadmap Allocation techniques Static Allocation Stack-based Allocation Heap-based Allocation Scope Rules Static Scopes Dynamic Scopes

More information

CS 314 Principles of Programming Languages. Lecture 13

CS 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 information

Typical Runtime Layout. Tiger Runtime Environments. Example: Nested Functions. Activation Trees. code. Memory Layout

Typical Runtime Layout. Tiger Runtime Environments. Example: Nested Functions. Activation Trees. code. Memory Layout Tiger Runtime Environments Compile-time environments are just symbol tables; they are used to assist static semantic analysis, code generation and code optimization. Run-time environments are about how

More information

Computing Inside The Parser Syntax-Directed Translation, II. Comp 412 COMP 412 FALL Chapter 4 in EaC2e. source code. IR IR target.

Computing Inside The Parser Syntax-Directed Translation, II. Comp 412 COMP 412 FALL Chapter 4 in EaC2e. source code. IR IR target. COMP 412 FALL 20167 Computing Inside The Parser Syntax-Directed Translation, II Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2017, Keith D. Cooper & Linda Torczon, all

More information

CS 480 Fall Runtime Environments. Mike Lam, Professor. (a.k.a. procedure calls and heap management)

CS 480 Fall Runtime Environments. Mike Lam, Professor. (a.k.a. procedure calls and heap management) CS 480 Fall 2015 Mike Lam, Professor Runtime Environments (a.k.a. procedure calls and heap management) Subprograms General characteristics Single entry point Caller is suspended while subprogram is executing

More information

Object Oriented Languages. Hwansoo Han

Object 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 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

Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments

Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments Programming Languages Third Edition Chapter 10 Control II Procedures and Environments Objectives Understand the nature of procedure definition and activation Understand procedure semantics Learn parameter-passing

More information

The basic operations defined on a symbol table include: free to remove all entries and free the storage of a symbol table

The basic operations defined on a symbol table include: free to remove all entries and free the storage of a symbol table SYMBOL TABLE: A symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is associated with information relating

More information

Topic 7: Activation Records

Topic 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 information

Lecture 9: Procedures & Functions. CS 540 George Mason University

Lecture 9: Procedures & Functions. CS 540 George Mason University Lecture 9: Procedures & Functions CS 540 George Mason University Procedures/Functions Control Abstraction call/return semantics, parameters, recursion Controlled Namespace Scope (local/non-local), binding,

More information

Computing Inside The Parser Syntax-Directed Translation. Comp 412

Computing Inside The Parser Syntax-Directed Translation. Comp 412 COMP 412 FALL 2018 Computing Inside The Parser Syntax-Directed Translation Comp 412 source code IR IR target Front End Optimizer Back End code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights

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

Programming Languages

Programming 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

Topic 3-a. Calling Convention 2/29/2008 1

Topic 3-a. Calling Convention 2/29/2008 1 Topic 3-a Calling Convention 2/29/2008 1 Calling Convention Calling convention is a standardized method for a program to pass parameters to a procedure and receive result values back from it. 2/29/2008

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

Chapter 5. Names, Bindings, and Scopes

Chapter 5. Names, Bindings, and Scopes Chapter 5 Names, Bindings, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Scope Scope and Lifetime Referencing Environments Named Constants 1-2 Introduction Imperative

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

Compiler Theory. (Semantic Analysis and Run-Time Environments)

Compiler Theory. (Semantic Analysis and Run-Time Environments) Compiler Theory (Semantic Analysis and Run-Time Environments) 005 Semantic Actions A compiler must do more than recognise whether a sentence belongs to the language of a grammar it must do something useful

More information

Lecture 7: Binding Time and Storage

Lecture 7: Binding Time and Storage Lecture 7: Binding Time and Storage COMP 524 Programming Language Concepts Stephen Olivier February 5, 2009 Based on notes by A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts Goal of Lecture The

More information

CIT Week13 Lecture

CIT 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 information

Runtime Environments I. Basilio B. Fraguela

Runtime Environments I. Basilio B. Fraguela Runtime Environments I Basilio B. Fraguela Runtime System Responsibilities Allocation of storage for program data Sometimes also deallocation Garbage collection Management of data structures the compiled

More information

Intermediate Representations Part II

Intermediate Representations Part II Intermediate Representations Part II Types of Intermediate Representations Three major categories Structural Linear Hybrid Directed Acyclic Graph A directed acyclic graph (DAG) is an AST with a unique

More information

Just-In-Time Compilers & Runtime Optimizers

Just-In-Time Compilers & Runtime Optimizers COMP 412 FALL 2017 Just-In-Time Compilers & Runtime Optimizers Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved.

More information

NOTE: Answer ANY FOUR of the following 6 sections:

NOTE: Answer ANY FOUR of the following 6 sections: A-PDF MERGER DEMO Philadelphia University Lecturer: Dr. Nadia Y. Yousif Coordinator: Dr. Nadia Y. Yousif Internal Examiner: Dr. Raad Fadhel Examination Paper... Programming Languages Paradigms (750321)

More information

Habanero Extreme Scale Software Research Project

Habanero Extreme Scale Software Research Project Habanero Extreme Scale Software Research Project Comp215: Garbage Collection Zoran Budimlić (Rice University) Adapted from Keith Cooper s 2014 lecture in COMP 215. Garbage Collection In Beverly Hills...

More information