. PUSHFRAME

Gera uma UWOP_PUSH_MACHFRAME entrada de código de desmantelamento. Se especificar a palavra-chave CODE opcional, a entrada do código unwind recebe um modificador de 1. Caso contrário, o modificador é 0.

Sintaxe

.PUSHFRAMECODE⟧ ;P rior to Unwind Versão 3 .PUSHFRAMECODE⟧ | [0-255] ; Unwind Versão 3 específica

Remarks

Use .PUSHFRAME com ml64.exe para especificar como uma função de frame se desenrola. Só pode usá-lo dentro do prólogo, que se estende desde a declaração do PROCFRAME até à . Diretiva ENDPROLOG .

  • Estas diretivas geram metadados de desmantelamento (.xdata e .pdata secções), mas não produzem código executável.
  • Preceda .PUSHFRAME com as instruções que implementam as ações a desenrolar.
  • Para garantir o acordo, envolve tanto as diretivas de desmantelamento como o código que devem desfazer numa macro.

Comportamento do Unwind Versão 3

Importante

O suporte ao Unwind Versão 3 é experimental e está sujeito a alterações. Ative-o usando ml64.exe /unwindv3.

Na Versão 3 de Unwind, .PUSHFRAME emite uma WOD_PUSH_CANONICAL_FRAME entrada de código de unwind.
Quando especifica a palavra-chave CODE opcional, o valor do modificador de entrada do código de desmantelamento é 1.
Se especificar um valor opcional, a diretiva usa-o diretamente.
Se não passares um argumento, o valor é 0. O valor deve situar-se entre 0 e 255.

Nota: No Unwind Versão 1, as diretivas surgem após a instrução. No Unwind Versão 3, as diretivas surgem antes da instrução. .PUSHFRAME deve aparecer antes da instrução que descreve. Este comportamento é o oposto da Versão 1, onde a diretiva segue a instrução.

Exemplo para 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

A contraparte do epílogo é . POPFRAME.

Ver também

x64 Unwind Versão 3 (experimental)
Referência das diretivas
. POPFRAME
MASM BNF Gramática
MASM para x64 (ml64.exe)