. PUSHFRAME

Genererar en UWOP_PUSH_MACHFRAME avspolningskodpost. Om du anger det valfria KOD-nyckelordet får kodposten varva ned en modifierare på 1. Annars är modifieraren 0.

Syntax

.PUSHFRAMECODE⟧ ;P rior för att varva ned version 3 .PUSHFRAMECODE⟧ | [0-255] ; Varva ned version 3

Anmärkningar

Använd .PUSHFRAME med ml64.exe för att ange hur en ramfunktion avrundas. Du kan bara använda den i prologen, som sträcker sig från PROC-deklarationenFRAME till . ENDPROLOG-direktivet .

  • Dessa direktiv genererar varva ned metadata (.xdata och .pdata avsnitt) men producerar inte körbar kod.
  • .PUSHFRAME Föregå med de instruktioner som implementerar de åtgärder som ska ångras.
  • För att säkerställa en överenskommelse omsluter du både avaktiveringsdirektiven och den kod som de är avsedda att varva ned i ett makro.

Varva ned version 3-beteende

Important

Stöd för att varva ned version 3 är experimentellt och kan komma att ändras. Aktivera det med hjälp ml64.exe /unwindv3av .

I Varva ned version 3 .PUSHFRAME avger du en WOD_PUSH_CANONICAL_FRAME avspolningskodpost.
När du anger det valfria KOD-nyckelordet är värdet för avrullningskodsmodifieraren 1.
Om du anger ett valfritt värde använder direktivet det direkt.
Om du inte skickar ett argument är värdet 0. Värdet måste ligga i intervallet 0–255.

Observera: I Varva ned version 1 kommer direktiven efter instruktionen. I Varva ned version 3 kommer direktiven före instruktionen. .PUSHFRAME måste visas före instruktionen som beskrivs. Det här beteendet är motsatsen till version 1, där direktivet följer instruktionen.

Exempel på avspolning 3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushframe CODE
.endprolog
   ; interrupt handler body ...
   iretq
Example1 ENDP
_text ENDS
END

Motsvarigheten till epilogen är . POPFRAME.

Se även

x64 Varva ned version 3 (experimentell)
Referens för direktiv
. POPFRAME
MASM BNF-grammatik
MASM för x64 (ml64.exe)