Der Stack spielt eine zentrale Rolle bei der Verwaltung von Daten und dem Programmfluss, insbesondere bei der Ausführung von Prozeduren. Er fungiert als spezieller Bereich im Hauptspeicher, der hauptsächlich für Rücksprungadressen, lokale Variablen und andere temporäre Daten verwendet wird. Der Stack arbeitet nach dem Last-In-First-Out (LIFO)-Prinzip, was bedeutet, dass die zuletzt hinzugefügten Daten als erstes wieder entfernt werden. Diese Eigenschaft macht den Stack ideal für die Verwaltung von Prozeduraufrufen, Rücksprungadressen und lokalen Variablen.
ARM-Prozessoren implementieren einen Full-Descending Stack, bei dem der Stack Pointer (SP) auf die zuletzt belegte Speicheradresse zeigt und beim Hinzufügen neuer Daten in Richtung niedrigerer Adressen verschoben wird (Descending). Full bedeutet in diesem Kontext, dass bei einem PUSH-Befehl der Stackpointer erst reduziert und dann die neuen Daten gespeichert werden, und bei einem POP-Befehl die Daten zuerst entfernt und dann der Stackpointer erhöht wird, so dass an der aktuellen Adresse, die im SP
hinterlegt ist immer der zuletzt abgelegte Wert liegt.
Die Interaktion mit dem Stack erfolgt hauptsächlich über die Befehle PUSH
und POP
, die es ermöglichen, Daten effizient zu speichern und wieder abzurufen:
SP
) reduziert und die Daten an der neuen Position speichert.
PUSH {R4}
POP {R4}
Das LIFO-Prinzip stellt sicher, dass die zuletzt gespeicherten Daten als erstes wieder abgerufen werden, was entscheidend für die korrekte Rückkehr von Prozeduren ist.
zurück | Hauptmenü | weiter |