Die Befehle ''enter'' und ''leave'' adjustieren den [[Stack]] für die Verwendung von lokalen Variablen.
== Funktionsweise ==
Das Befehlspaar enter/leve war nicht zwingend notwendig, da man sie durch mehrere Befehle ersetzen kann. Da aber diese Befehlsfolge von vielen Hochsprachen häufig verwendet wurde, hat man dieses spezielle Befehlspaar eingeführt.
=== enter ===
Enter hat folgende Syntax:
enter operand1, operand2
Sie lässt sich ersetzen durch:
push ebp
mov ebp, esp
sub esp, operand1
''operand1'' gibt also an, wieviel Speicherplatz auf dem Stack freigehalten werden soll für [[lokale Variablen]]. ''operand2'' steht für die Verschachtlungstiefe und kann auf 0 gesetzt werden.
== leave ==
Leave macht die Änderungen von Enter rückgängig, damit der Aufrufstack wiederhergestellt wird und die Funktion zum Aufrufer zurückkehren kann:
leave
Sie lässt sich ersetzen durch:
mov esp, ebp
pop ebp
== Umsetzung in verschiedenen Compilern ==
=== gcc ===
[[gcc]] verwendet nur den ''leave''-Befehl, anstatt ''enter'' aber die obige Ersatzform.
== siehe auch ==
* [[Stack]]
* [[lokale Variablen]]