Wie werden Parameter und lokale
Variablen einer Funktion auf dem
CallStack verwaltet?

Call Stack dient dazu, dass der zur Laufzeit eines
Programms Informationen der gerade aufgerufenen
Unterprogramme vorhält. Dazu wird üblicherweise
der sogenannte "Stapelzeiger", ein besonderes
Prozessorregister, verwendet. Im Befehlssatz eines
solchen Prozessors befinden sich Anweisungen zum
Einrichten, Befüllen und Abbauen des
Stapelspeichers sowie Befehle zum Eintritt in ein
Unterprogramm und zur Rückkehr aus einem
Unterprogramm.

lokale Variablen, so wird für sie Platz auf dem
Aufrufstapel reserviert. Da jeder Aufruf zu einem
eigenen Satz an Variablen führt, sind damit rekursive
Unterprogrammaufrufe möglich. Bei der
Verwendung von rekursiven Aufrufen müssen immer
Abbruchbedingungen eine begrenzte
Verschachtelung garantieren, ansonsten ist ein
Überlauf des Aufrufstapels die Folge.
Für den Zugriff auf lokale Variablen wird häufig der
frame pointer verwendet, der auf die Adresse im
Aufrufstapel mit der zugehörigen
Rücksprungadresse zeigt.

Diskussion