Während ein Unterprogramm rechnet,
stehen seine lokalen Daten in einem Aktivationsverbund (Frame),
jeder Frame hat zwei Vorgänger:
- dynamischer V. (Frame des aufrufenden UP)
(benutzt zum Rückkehren)
- statischer V. (Frame des textuell umgebenden UP)
(benutzt zum Zugriff auf ``fremde'' lokale Variablen)
Beispiel: zeichen Frames und statische/dynamische Links für
a(3,4)
bei
int a (int x, int y) {
int b (int z) { return z > 0 ? 1 + b (z-1) : x; }
return b (y);
}
Übung: Assemblercode verstehen (gcc -S
)
2010-02-04