Informatik Rechenarchitektur Stack?
Hey,
ich habe folgende 2 Fragen über Stacks:
2. Warum wird bei einem Unterfunktionsaufruf (call) der Inhalt des Program Counter auf dem Stack gesichert, bei einem Sprung (jmp) aber nicht?
3. Globale Variablen erhalten vom C-Compiler feste Adressen im Hauptspeicher, sogenannte statische Speicherallokation. Funktionslokale Variablen werden auf dem Stack angelegt, dies wird automatische Speicherallokation genannt. Warum wird das so gemacht?
Vielen Dank!
1 Antwort
zu 2. Bei einem Unterfunktionsaufruf geht das Programm nach dem Abarbeiten der Unterfunktion an der Stelle nach dem Aufruf weiter. Also muss sich das Programm die Adresse, wo es weggesprungen ist, merken. Das macht es im Kellerspeicher (Stack).
Bei einem Jump kommt es nicht wieder zurück, sondern macht dort weiter, wohin es der Sprung geführt hat. Deshalb muss es sich auch nicht merken, wo es abgesprungen ist.