Das Befehlspaar ''enter'' und ''leave'' adjustiert den [[Stack]] für die Verwendung von lokalen Variablen.
== Funktionsweise ==
Das Befehlspaar ''enter''/''leave'' 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 für lokale Variablen freigehalten werden soll. ''operand2'' steht für die Verschachtelungstiefe 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]]
[[Kategorie:x86-Befehle]]