.SETFRAME

Renseigne le champ d’enregistrement de cadre et le décalage dans les informations de déroulement à l’aide du registre spécifié (reg) et du décalage (offset). Le décalage doit être un multiple de 16 et inférieur ou égal à 240. Cette directive génère également une UWOP_SET_FPREG entrée de code de déroulement pour le registre spécifié à l’aide du décalage de prologue actuel.

Syntaxe

. SETFRAME reg, offset

Notes

. SETFRAME permet ml64.exe utilisateurs de spécifier comment une fonction frame se déroule et est uniquement autorisée dans le prologue, qui s’étend de la déclaration PROC FRAME à l’objet . Directive ENDPROLOG . Ces directives ne génèrent pas de code ; ils génèrent .xdata uniquement et .pdata. . SETFRAME doit être précédé d’instructions qui implémentent réellement les actions à annuler. 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.

Pour plus d’informations, consultez MASM pour x64 (ml64.exe).

Exemple

Description

L’exemple suivant montre comment utiliser un pointeur d’image :

Code

; ml64 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
   push rbp
.pushreg rbp
   sub rsp, 010h
.allocstack 010h
   mov rbp, rsp
.setframe rbp, 0
.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
   add rsp, 010h
   pop rbp
   ret
frmex2 ENDP
_text ENDS
END

Voir aussi

Informations de référence sur les directives
Grammaire MASM BNF