.PUSHFRAME

Vygeneruje UWOP_PUSH_MACHFRAME položku odvinutí kódu. Pokud zadáte volitelné klíčové slovo CODE , položka unwind kódu získá modifikátor 1. V opačném případě je modifikátor 0.

Syntaxe

.PUSHFRAME ⟦CODE⟧ ;P rior odvíjení verze 3 .PUSHFRAME ⟦CODE⟧ | [0-255] ; Odvinutí verze 3 specifické

Poznámky

ml64.exe Slouží .PUSHFRAME k určení, jak se funkce rámce odvíje. Lze jej použít pouze v rámci prologu, který rozšiřuje z prohlášení PROCFRAME na . ENDPROLOG – direktiva.

  • Tyto direktivy generují metadata unwind (.xdata a .pdata oddíly), ale nevytvářely spustitelný kód.
  • .PUSHFRAME Před pokyny, které implementují akce, které se mají zrušit.
  • Pokud chcete zajistit dohodu, zabalte direktivy unwind i kód, který mají v makru uvolnit.

Odvinutí chování verze 3

Important

Podpora unwind verze 3 je experimentální a může se změnit. Povolte ho pomocí .ml64.exe /unwindv3

Ve verzi Unwind verze 3 .PUSHFRAME vygeneruje WOD_PUSH_CANONICAL_FRAME položku kódu unwind.
Pokud zadáte volitelné klíčové slovo CODE , hodnota modifikátoru pro uvolnění kódu je 1.
Pokud zadáte volitelnou hodnotu, direktiva ji použije přímo.
Pokud argument nepředáte, hodnota je 0. Hodnota musí být v rozsahu 0–255.

Poznámka: Ve verzi Unwind verze 1 jsou direktivy po pokynu. Ve verzi 3 unwind jsou direktivy před pokynem. .PUSHFRAME musí se zobrazit před pokyny, které popisuje. Toto chování je opakem verze 1, kde direktiva dodržuje instrukce.

Příklad pro unwindv3

; 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

Epilogue protějšk je . POPFRAME.

Viz také

x64 Unwind verze 3 (experimentální)
Odkaz na direktivy
. POPFRAME
Gramatika MASM BNF
MASM pro x64 (ml64.exe)