利用尾聲中的當前偏移,為指定暫存器對產生兩暫存器彈出的解轉碼條目。
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 文法