.POPFRAME(彈簧框架)

在後記中產生WOD_PUSH_CANONICAL_FRAME Windows 解卷資料(WOD)的解捲代碼條目。

Syntax

。POPFRAMECODE |

參數

價值
一個可選的數字修飾符,範圍為 0–255。
CODE 互斥。 如果你指定可選的 CODE 關鍵字,解捲程式碼的條目會獲得 1 的修飾符。
如果你指定一個可選的數 ,它就會收到指定的值。
如果你沒有通過參數,值就是 0。

備註

Important

此指令為實驗性質,且可能隨時變動。 啟用 Unwind 版本 3 ml64.exe /unwindv3

.POPFRAME 指令允許 ml64.exe 使用者指定框架函式如何在 epilog 中展開。 你只能在 Epilog 區域內使用 。開始後記。結尾

  • 。POPFRAME 僅在 Unwind 版本 3 中有效。 它是 的尾聲對應。PUSHFRAME。 運算元值應與對應的 相符。序章裡的推框
  • 在 Unwind 版本 3 中,POPFRAME 必須 出現在 實作要解捲動作的指令前方。 為了確保一致,將解碼指令和它們要解開的程式碼都包裝成一個巨集。
  • 在 Unwind 版本 3 中,尾聲指令是產生尾聲解碼碼的強制性。 沒有一對的尾聲解捲碼會被釋放 .BEGINEPILOG/.ENDEPILOG
  • 這些指令會產生解開的元資料(.xdata.pdata 區段),但不會產生可執行程式碼。

備註

在 Unwind 版本 1 中,指令會出現在對應指令之後。 在 Unwind 版本 3 中,指令會出現 在指令前

unwindv3 範例

以下範例展示了如何使用 在後記中使用 POPFRAME,表示一個中斷處理程序,負責推送和彈出一個典型的機器框架。

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushframe
   .pushreg rbx
   push rbx
   .allocstack 32
   sub rsp, 32
.endprolog
   ; interrupt handler body ...
   .beginepilog
   .freestack 32
   add rsp, 32
   .popreg rbx
   pop rbx
   .popframe
   .endepilog
   iretq
Example1 ENDP
_text ENDS
END

另請參閱

x64 Unwind 版本 3(實驗性)
.推框
.開始後記
.結尾
MASM BNF 文法