June 17, 2013

KBP chapter 10

Review questions 

1.What is the definition used in this chapter for “simple” subprograms?
-Subprograms cannot be nested and all local variables are static.


2. Which of the caller or callee saves execution status information?
-Either can sqve the execution status

3. What must be stored for the linkage to a subprogram?
- Execution status information


4. What is the task of a linker?
- find files that contain the translated subprograms referenced in that program and load them into memory, set target addresses of all calls to those subprograms in the main program to the entry addresses of those subprograms.

6. What is the difference between an activation record and an activation
record instance?
-The format, or layout, of the noncode part of a subprogram is called an
activation record.

-An activation record instance is a concrete example of an activation
record.


8. What kind of machines often use registers to pass parameters?
RISC.


11. What is an EP, and what is its purpose?
Enviroment Pointer.
The EP is used as the base of the offset addressing of the data contents of
the activation record instance—parameters and local variables.

Problem Set

6. Although local variables in Java methods are dynamically allocated at the beginning of each activation, under what circumstances could the value of a local variable in a particular activation retain the value of previous activation ?
-only if variable is declared as static. 
-Static modifier is a modifier that makes a variable history sensitive.

7. It is stated in this chapter that when nonlocal variables are accessed in a dynamic-scoped language using the dynamic chain, variable names must be stored in the activation records with the values. If this were actually done, every nonlocal access would require a sequence of costly string comparisons on names. Design an alternative to these string comparisons that would be faster.
-auxiliary data structure called a display. Or, to write variable names as integers. These integers act like an array. So when the activation happens, the comparisons will be faster.

9. The static-chain method could be expanded slightly by using two static links in each activation record instance where the second points to the static grandparent activation record instance. How would this approach affect the time required for subprogram linkage and nonlocal references ?
-Including two static links would reduce the access time to nonlocals that are defined in scopes two steps away to be equal to that for nonlocals that are one step away. Overall, because most nonlocal references are relatively close, this could significantly increase the execution efficiency of many programs.

11. If a compiler uses the static chain approach to implementing blocks, which of the entries in the activation records for the subprograms are needed in the activation records for blocks?
-the static chain connects all the static ancestors of an executing subprogram, in order of static parent first.