27 lines
1 KiB
Plaintext
27 lines
1 KiB
Plaintext
|
.NH 2
|
||
|
Pointers and subroutine calls
|
||
|
.PP
|
||
|
The theory outlined above assumes that variables can
|
||
|
only be changed by a direct assignment.
|
||
|
This condition does not hold for EM.
|
||
|
In case of an assignment through a pointer variable,
|
||
|
it is in general impossible to see which variable is affected
|
||
|
by the assignment.
|
||
|
Similar problems occur in the presence of procedure calls.
|
||
|
Therefore we distinguish two kinds of definitions:
|
||
|
.IP -
|
||
|
an \fIexplicit\fR definition is a direct assignment to one
|
||
|
specific variable
|
||
|
.IP -
|
||
|
an \fIimplicit\fR definition is the potential alteration of
|
||
|
a variable as a result of a procedure call or an indirect assignment.
|
||
|
.LP
|
||
|
An indirect assignment causes implicit definitions to
|
||
|
all variables that may be accessed indirectly, i.e.
|
||
|
all local variables for which no register message was generated
|
||
|
and all global variables.
|
||
|
If a procedure contains an indirect assignment it may change the
|
||
|
same set of variables, else it may change some global variables directly.
|
||
|
The KILL, GEN, IN and OUT sets contain explicit as well
|
||
|
as implicit definitions.
|