Procedure Activations Chapter 5 CS 331 Procedures Basic
Procedure Activations Chapter 5 CS 331
Procedures: Basic Terminology • Procedures take zero or more arguments, and then do something – e. g printf(“Hello”), exit, • Functions take zero or more arguments, and return a value of a given type – e. g. sqrt(2. ), random(), fopen(“foo”) • Procedures and functions extend the language (like assembler macros? )
Parameters • When declared, a procedure or function is given zero or more formal parameters – usually a procedure has a certain fixed number of parameters – in C, varargs is used to get around this, e. g. for printf • When the procedure is invoked, the arguments are used
Arguments and Parameters • The formal parameter of foo is x • The argument of foo in line 5 is 2 • In C, everything is a function : -( float foo(x: int) { return sqrt(x); } main(int argc, char **argv) { printf(“%f”, foo(2)); }
Parameter Passing • Call by value – used in C • Call by reference (a. k. a. call by address) – available in Pascal et al • procedure foo(var J: integer) changed *) (* J might be • Call by value-result – like call by reference, except parameter can’t change until the procedure ends • Call by name (historical interest only)
Activation Records • Each invocation of a procedure (unless it’s inline) is associated with an in-memory data structure that indicates – Where the local variables are – The state of the call stack, i. e. to where should control return after this invocation ends? – Prologue and epilogue code is generated to manage local storage, and do copying of parameters
Lexical vs. Dynamic Scope • In lexical scope, identifiers are declared in accordance to nesting in the program text – Can be determined unambiguously at compiletime • In dynamic scope, identifiers are declared in accordance to when the declarations are encountered during execution • Discuss example on pages 161 -162
Activation Trees • Each node represents an activation of a procedure – Nodes are listed left to right in order of invocation – Nodes can be “decorated” with values of parameters, local variables, etc. • Exercise 5. 2 a, b, c due Tuesday 3/29 • Ignore tail-recursion elimination & quicksort
- Slides: 8