共用方式為


.SETFRAME

使用指定的緩存器(reg)和位移(offset)填入框架緩存器欄位,並在回溯資訊中位移。 位移必須是 16 的倍數,且小於或等於 240。 這個指示詞也會使用目前的序言位移,為指定的緩存器產生 UWOP_SET_FPREG 回溯程式代碼專案。

語法

.SETFRAME regoffset

備註

.SETFRAME 可ml64.exe使用者指定框架函式回溯的方式,而且只能在序言中允許,該序言會從 PROC FRAME 宣告延伸至 。ENDPROLOG 指示詞。 這些指示詞不會產生程序代碼;它們只會產生 .xdata.pdata.SETFRAME 前面應該有實際實作要解除之動作的指示。 最好包裝回溯指示詞,以及它們打算在宏中回溯的程序代碼,以確保合約。

如需詳細資訊,請參閱適用於 x64 的 MASM(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 文法