Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Gera uma entrada de código de desenrolamento de WOD_PUSH_CANONICAL_FRAME Windows (WOD) no epílogo.
Syntax
. POPFRAME ⟦Valor de CÓDIGO | ⟧
Parâmetros
valor
Um modificador numérico opcional no intervalo de 0 a 255.
Mutuamente exclusivo com CODE. Se você especificar a palavra-chave CODE opcional, a entrada de código de desenrolamento receberá um modificador de 1.
Se você especificar um valor numérico opcional, ele receberá o valor especificado.
Se você não passar um argumento, o valor será 0.
Observações
Importante
Esta diretiva é experimental e está sujeita a alterações. Habilitar Descontrair versão 3 com ml64.exe /unwindv3.
O . A diretiva POPFRAME permite que os usuários especifiquem ml64.exe como uma função de quadro desenrola em um epilog. Você só pode usá-lo dentro de uma região de epíloga, entre . BEGINEPILOG e . ENDEPILOG.
- . POPFRAME só é válido no Unwind Versão 3. É o equivalente de epilog de . PUSHFRAME. O valor do operando deve corresponder ao correspondente . PUSHFRAME no prólogo.
- Em Descontrair versão 3, . POPFRAME deve aparecer antes da instrução que implementa a ação a ser desfeito. Para garantir o acordo, embrulhe as diretivas de desenrolamento e o código que elas devem descontrair em uma macro.
- No Unwind Versão 3, as diretivas de epílogo são obrigatórias para a geração de código de desenrolamento do epílogo. Nenhum epílogo desenrola códigos são emitidos sem um
.BEGINEPILOG/.ENDEPILOGpar. - Essas diretivas geram metadados de desenrolamento (
.xdatae.pdataseções), mas não produzem código executável.
Note
No Unwind Versão 1, as diretivas são exibidas após a instrução correspondente. No Unwind Versão 3, as diretivas são exibidas antes da instrução.
Exemplo de desenrolamento3
O exemplo a seguir mostra como usar . POPFRAME em um epílogo para indicar um manipulador de interrupção que envia por push e exibe um quadro de computador canônico.
; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
.pushframe
.pushreg rbx
push rbx
.allocstack 32
sub rsp, 32
.endprolog
; interrupt handler body ...
.beginepilog
.freestack 32
add rsp, 32
.popreg rbx
pop rbx
.popframe
.endepilog
iretq
Example1 ENDP
_text ENDS
END
Consulte também
x64 Descontrair versão 3 (experimental)
. PUSHFRAME
. BEGINEPILOG
. ENDEPILOG
Gramática BNF do MASM