. FREESTACK

Generiert einen WOD_ALLOC_SMALL, WOD_ALLOC_LARGE oder WOD_ALLOC_HUGE Codeeintrag mit der angegebenen Größe für den aktuellen Offset im Epilog.

Syntax

. FREESTACK-Größe

Parameter

Größe
Die Anzahl der Bytes, die aus dem Stapel zugeordnet werden sollen. Muss ein Vielfaches von 8 sein.

Hinweise

Important

Diese Richtlinie ist experimentell und kann geändert werden. Aktivieren Sie version 3 mithilfe ml64.exe /unwindv3von "Abwickeln" .

  • Sie können . FREESTACK nur in Version 3 abwickeln. Es ist das Epilog-Gegenstück zu . ALLOCSTACK.
  • Sie können . FREESTACK nur innerhalb einer Epilogregion zwischen . BEGINEPILOG und . ENDEPILOG.
  • In Relax Version 3, . FREESTACK muss vor der add rsp, N Anweisung angezeigt werden, die den Stapel-Deallocation implementiert.
  • Um eine Vereinbarung zu gewährleisten, schließen Sie sowohl die Entleer-Direktiven als auch den Code ein, den sie in einem Makro entspannen sollen.
  • Diese Direktiven generieren entwendige Metadaten (.xdata und .pdata Abschnitte), erzeugen jedoch keinen ausführbaren Code.
  • Microsoft Assembler (MASM) wählt die effizienteste Codierung für eine bestimmte Größe aus.

MASM emittiert je nach Größe einen von drei Abspanncodes:

Entladungscode Zustand
WOD_ALLOC_SMALL Größe ≤ 128 Bytes
WOD_ALLOC_LARGE Größe ≤ 32 KB
WOD_ALLOC_HUGE Größe> 32 KB

In "Relax Version 3" sind Epilogdirektiven für die Codegenerierung von Epilogen obligatorisch. Der Assembler gibt keine epilogen Entspanncodes ohne Paar .BEGINEPILOG/.ENDEPILOG aus.

Note

In Der Version 1 wird die Direktive nach der entsprechenden Anweisung angezeigt. In Der Version 3 wird die Direktive vor der Anweisung angezeigt.

Beispiel für die Entspannung 3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .allocstack 16
   sub rsp, 16
.endprolog
   ; function body
   .beginepilog
   .freestack 16
   add rsp, 16
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Siehe auch

x64 Entspannen Version 3 (experimentell)
Direktivenreferenz
. ALLOCSTACK
. BEGINEPILOG
MASM BNF Grammatik