Chapter 6: Runtime System

Parameter Passing .

. Call by reference (call by address)

- the caller passes a pointer to each location of actual parameters

- if actual parameter is a name then lvalue is passed

- if actual parameter is an expression then it is evaluated in a new location and the address of that location is passed

When the parameters are passed by reference (also known as call-by-address or call-by location), the caller passes to the called procedure a pointer to the storage address of each actual parameter.

1. If an actual parameter is a name or an expression having an l-value, then that l-value itself is passed.

2. However, if the actual parameter is an expression, like a + b or 2, that has no l-value, then the expression is evaluated in a new location, and the address of that location is passed.

A reference to a formal parameter in the called procedure becomes, in the target code, an indirect reference through the pointer passed to the called procedure.