Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 (
.xdataa.pdataoddíly), ale nevytvářely spustitelný kód. -
.PUSHFRAMEPř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.
.PUSHFRAMEmusí 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)