.POP2REG

利用尾聲中的當前偏移,為指定暫存器對產生兩暫存器彈出的解轉碼條目。

Syntax

。POP2REGregister1, register2

參數

登記器1
第一個要爆開的音區。 必須是通用的 64 位元暫存器。

登記器2
第二個要彈出的音區。 必須是通用的 64 位元暫存器。

register1 和 register2 各自可以是:
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31。

備註

Important

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

  • 。POP2REG 僅在 Unwind 版本 3 中有效。 它是 .PUSH2REG。
  • 。POP2REG 僅允許在結語區域內,介於 。開始後記 與 。結尾。
  • 這些指令會產生解開的元資料(.xdata 和 .pdata 區段),但不會產生可執行程式碼。
  • 在 Unwind 版本 3 中,POP2REG必須出現在實際執行該動作的指令前,才能展開該動作。
  • 在 Unwind 版本 3 中,尾聲指令是產生尾聲解碼碼的強制性。 沒有一對的尾聲解捲碼會被釋放 .BEGINEPILOG/.ENDEPILOG 。
  • 為了確保一致,將解碼指令和它們要解開的程式碼都包裝成一個巨集。

如果 暫存器1 和 暫存器2 連續且遞增順序,MASM會 WOD_PUSH_CONSECUTIVE_2 發出一個回轉碼。 否則,MASM 會 WOD_PUSH2 發出一個解碼碼。

備註

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

Example

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .push2reg rbx, rsi
   push2 rbx, rsi
   .push2reg r10, r11
   push2 r10, r11
.endprolog
   ; rest of function ...
   .beginepilog
   .pop2reg r10, r11
   pop2 r10, r11
   .pop2reg rbx, rsi
   pop2 rbx, rsi
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

另請參閱

x64 Unwind 版本 3(實驗性)
指令參考
.PUSH2REG
.POPREG
.開始後記
MASM BNF 文法