.SAVEXMM128

使用当前序言偏移为指定 XMM 寄存器和偏移生成 UWOP_SAVE_XMM128UWOP_SAVE_XMM128_FAR 展开代码条目。 Microsoft汇编程序(MASM)选择最有效的编码。

语法

.SAVEXMM128 xmmreg偏移量

注解

用于.SAVEXMM128ml64.exe指定帧函数展开的方式。 只能在序幕中使用,该序幕从 PROCFRAME 声明扩展到 .ENDPROLOG 指令。 这些指令生成展开元数据(.xdata.pdata 节),但不生成可执行代码。 先 .SAVEXMM128 于实际实现要撤消的操作的说明。 为了确保协议,请包装展开指令及其要在宏中展开的代码。

偏移量必须是 16 的倍数。

展开版本 3 行为

Important

展开版本 3 支持是实验性的,可能会更改。 使用 ml64.exe /unwindv3.

在展开版本 3 中, .SAVEXMM128 发出一个 WOD_SAVE_XMM128 或一个 WOD_SAVE_XMM128_FAR 展开代码条目。 Microsoft汇编程序(MASM)根据 offset0 的大小选择最有效的编码:

展开代码 条件
WOD_SAVE_XMM128 偏移 量可以编码为缩放的 16 位值
WOD_SAVE_XMM128_FAR 偏移 需要完整的 32 位值

注释

在展开版本 1 中,指令位于指令之后。 在展开版本 3 中,指令位于指令之前。 .SAVEXMM128 必须显示在它描述的说明 之前 。 此要求与版本 1 相反,其中指令遵循指令。

展开 v3 的示例

; 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 展开版本 3 (实验性)
指令参考
MASM BNF 语法
x64 的 MASM (ml64.exe)