. UNSETFRAME

Génère une WOD_SET_FPREG entrée de code de déroulement pour le registre et le décalage spécifiés à l’aide du décalage actuel dans l’épilogue.

Syntaxe

.UNSETFRAME reg, offset

Paramètres

reg
Registre du pointeur d’image pour annuler l’ensemble.

Compenser
Décalage dans le cadre de la pile où le pointeur d’image a été établi.

Remarques

Important

Cette directive est expérimentale et peut être modifiée. Activez Unwind Version 3 avec ml64.exe /unwindv3.

.UNSETFRAME est valide uniquement dans Unwind Version 3. C’est l’épilogue équivalent à . SETFRAME.

.UNSETFRAME est autorisé uniquement dans une région épilogue, entre . BEGINEPILOG et . ENDEPILOG. Ces directives génèrent des métadonnées de déroulement (.xdata et .pdata des sections) mais ne produisent pas de code exécutable.
Dans Unwind Version 3, .UNSETFRAME doit apparaître avant l’instruction qui restaure le pointeur de pile à partir du registre du pointeur d’image.
Il est recommandé d’encapsuler les directives de déroulement et le code qu’ils sont destinés à dérouler dans une macro pour garantir l’accord.

Dans Unwind Version 3, les directives d’épilogue sont obligatoires pour la génération de code de déroulement d’épilogue. Aucun code de déroulement d’épilogue n’est émis sans .BEGINEPILOG/.ENDEPILOG paire.

Note

Dans Unwind Version 1, la directive apparaît après l’instruction correspondante. Dans Unwind Version 3, la directive apparaît avant l’instruction.

Exemple de déroulement3

; 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

Voir aussi

x64 Unwind Version 3 (expérimentale)
Informations de référence sur les directives
. SETFRAME
. BEGINEPILOG
Grammaire MASM BNF