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 WOD_SET_FPREG entrada de código de desenrolamento para o registo e deslocamento especificados usando o deslocamento atual no epílogo.
Syntax
.UNSETFRAMEregulador, deslocamento
Parâmetros
reg
O apontador de frame regista-se para unset.
Deslocamento
O deslocamento para o quadro de pilha onde o ponteiro do quadro foi estabelecido.
Remarks
Importante
Esta diretiva é experimental e está sujeita a alterações. Ativar Unwind Versão 3 com ml64.exe /unwindv3.
.UNSETFRAME só é válido no Unwind Versão 3. É o equivalente no epílogo de . SETFRAME.
.UNSETFRAME só é permitido dentro de uma região de epílogo, entre . BEGINEPILOG e . FIM EPÍLOGO. Estas diretivas geram metadados de desmantelamento (.xdata e .pdata secções), mas não produzem código executável.
No Unwind Versão 3, .UNSETFRAME deve aparecer antes da instrução que restaura o ponteiro de pilha a partir do registo do ponteiro de frame.
É uma boa prática envolver tanto as diretivas de desmantelamento como o código que devem desfazer numa macro para garantir o acordo.
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/.ENDEPILOG par.
Note
No Unwind Versão 1, a diretiva aparece após a instrução correspondente. Na Versão 3 de Desenrolar, a diretiva aparece antes da instrução.
Exemplo para unwindv3
; ml64 /unwindv3 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
.pushreg rbp
push rbp
.allocstack 010h
sub rsp, 010h
.setframe rbp, 0
mov rbp, rsp
.endprolog
; modify the stack pointer outside of the prologue (similar to alloca)
sub rsp, 060h
; we can unwind from the following AV because of the frame pointer
mov rax, 0
mov rax, [rax] ; AV!
add rsp, 060h
.beginepilog
.unsetframe rbp, 0
mov rsp, rbp
.freestack 010h
add rsp, 010h
.popreg rbp
pop rbp
.endepilog
ret
frmex2 ENDP
_text ENDS
END
Ver também
x64 Unwind Versão 3 (experimental)
Referência de Diretivas
. QUADRO DEFINIDO
. BEGINEPILOG
MASM BNF Gramática