.SAVEXMM128

UWOP_SAVE_XMM128使用目前的序言位移,為指定的 XMM 快取器和位移產生 或 UWOP_SAVE_XMM128_FAR 回溯程式代碼專案。 Microsoft 組合語言器(MASM)會選擇最有效率的編碼方式。

語法

.SAVEXMM128 xmmreg , 偏移

備註

用 .SAVEXMM128 來 ml64.exe 指定框架函數如何展開。 你只能在序章中使用,序 PROCFRAME 章從宣告延伸到 。ENDPROLOG 指令。 這些指令會產生解開的元資料(.xdata 和 .pdata 區段),但不會產生可執行程式碼。 前面要 .SAVEXMM128 列出實際執行要展開的動作的指令。 為了確保一致,將解碼指令和它們要解開的程式碼都包裝成一個巨集。

offset 必須是 16 的倍數。

Unwind 版本 3 的行為

Important

Unwind 版本 3 的支援仍屬實驗性質,可能會有所變動。 啟用時可使用 ml64.exe /unwindv3。

在 Unwind 版本 3 中,會 .SAVEXMM128 輸出 a WOD_SAVE_XMM128 或 WOD_SAVE_XMM128_FAR unwind 代碼。 Microsoft組譯器(MASM)根據 offset 的大小選擇最有效率的編碼:

解纏程式碼 狀況
WOD_SAVE_XMM128 偏移 量可編碼為縮放的 16 位元值
WOD_SAVE_XMM128_FAR 偏移 量需要完整的 32 位元值

備註

在 Unwind 版本 1 中,指令會放在指令之後。 在 Unwind 版本 3 中,指令會放在指令之前。 .SAVEXMM128 必須 出現在其 描述的指令之前。 此要求與版本 1 相反,版本 1 指令是跟隨指令。

unwindv3 範例

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .allocstack 030h
   sub rsp, 030h
   .savexmm128 xmm6, 0
   movdqa [rsp], xmm6
   .savexmm128 xmm7, 010h
   movdqa [rsp+010h], xmm7
.endprolog
   ; rest of function ...
   movdqa xmm7, [rsp+010h]
   movdqa xmm6, [rsp]
   add rsp, 030h
   ret
Example1 ENDP
_text ENDS
END

後記對應者為 。RESTOREXMM128。

另請參閱

x64 Unwind 版本 3(實驗性)
指示詞參考
MASM BNF 文法
適用於 x64 的 MASM (ml64.exe)