.SETFRAME

使用指定寄存器 (reg) 和偏移 (offset) 在展开信息中填充帧寄存器字段和偏移。 偏移必须是 16 的倍数,并且小于或等于 240。 此指令还使用当前序言偏移为指定寄存器生成 UWOP_SET_FPREG 展开代码条目。

语法

.SETFRAMEreg偏移量

备注

.SETFRAME 允许 ml64.exe 用户指定帧函数的展开方式,并且仅允许在序言中展开,该序表从 PROC FRAME 声明扩展到 .ENDPROLOG 指令。 这些指令不生成代码;它们仅生成 .xdata.pdata.SETFRAME 前面应有实际实现要撤消的操作的说明。 最好将展开指令和代码包装在宏中,以确保一致。

有关详细信息,请参阅 MASM for x64 (ml64.exe)

示例

说明

以下示例演示如何使用帧指针:

代码

; 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

另请参阅

指令参考
MASM BNF 语法