Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Gera uma entrada de código WOD_PUSH_CANONICAL_FRAME Windows unwind data (WOD) no epílogo.
Syntax
. POPFRAME ⟦VALOR CÓDIGO | ⟧
Parâmetros
valor
Um modificador numérico opcional no intervalo 0–255.
É mutuamente exclusivo com o CODE. Se especificar a palavra-chave CODE opcional, a entrada do código de desmantelamento recebe um modificador de 1.
Se especificar um valor numérico opcional em vez disso, recebe o valor especificado.
Se não passares um argumento, o valor é 0.
Remarks
Importante
Esta diretiva é experimental e está sujeita a alterações. Ativar Unwind Versão 3 com ml64.exe /unwindv3.
O . A diretiva POPFRAME permite ml64.exe aos utilizadores especificar como uma função de frame se desenrola num epílogo. Só pode usá-lo dentro de uma região epilog, entre . BEGINEPILOG e . FIM EPÍLOGO.
- . O POPFRAME só é válido no Unwind Versão 3. É o equivalente epílogo de . PUSHFRAME. O valor do operando deve corresponder ao correspondente . PUSHFRAME no prólogo.
- Em Unwind Versão 3, . O POPFRAME deve aparecer antes da instrução que implementa a ação a desenrolar. Para garantir o acordo, envolve tanto as diretivas de desmantelamento como o código que devem desfazer numa macro.
- Na Versão 3 do Unwind, as diretivas de epílogo são obrigatórias para a geração do código de desmantelamento do epílogo. Não são emitidos códigos de desmantelamento do epílogo sem um
.BEGINEPILOG/.ENDEPILOGpar. - Estas diretivas geram metadados de desmantelamento (
.xdatae.pdatasecções), mas não produzem código executável.
Note
No Unwind Versão 1, as diretivas aparecem após a instrução correspondente. No Unwind Versão 3, as diretivas aparecem antes da instrução.
Exemplo para unwindv3
O exemplo seguinte mostra como usar . POPFRAME num epílogo para indicar um gestor de interrupções que empurra e destrói um frame de máquina 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
Ver também
x64 Unwind Versão 3 (experimental)
. PUSHFRAME
. BEGINEPILOG
. FIM EPÍLEGO
MASM BNF Gramática