.SAVEXMM128

UWOP_SAVE_XMM128 Generuje wpis kodu lub odwija się UWOP_SAVE_XMM128_FAR dla określonego rejestru XMM i przesunięcia przy użyciu bieżącego przesunięcia prologu. Microsoft Assembler (MASM) wybiera najbardziej wydajne kodowanie.

Składnia

.SAVEXMM128 xmmreg , przesunięcie

Uwagi

Użyj polecenia .SAVEXMM128 , ml64.exe aby określić sposób odwijniania funkcji ramki. Można go używać tylko w prologu, który rozciąga się od PROCFRAME deklaracji do . ENDPROLOG , dyrektywa. Te dyrektywy generują metadane odwiju (.xdata i .pdata sekcje), ale nie tworzą kodu wykonywalnego. .SAVEXMM128 Przed instrukcjami, które faktycznie implementują akcje, które mają być niezaukończone. Aby zapewnić umowę, zawijaj zarówno dyrektywy unwind, jak i kod, który mają na celu odwinięcie w makrze.

przesunięcie musi mieć wielokrotność 16.

Zachowanie odwijania wersji 3

Ważna

Obsługa systemu Unwind w wersji 3 jest eksperymentalna i może ulec zmianie. Włącz ją przy użyciu polecenia ml64.exe /unwindv3.

W obszarze Unwind Version 3 .SAVEXMM128 emituje WOD_SAVE_XMM128 wpis kodu lub WOD_SAVE_XMM128_FAR unwind. Microsoft Assembler (MASM) wybiera najbardziej wydajne kodowanie na podstawie rozmiaru offset:

Odwij kod Warunek
WOD_SAVE_XMM128 przesunięcie może być zakodowane jako skalowana wartość 16-bitowa
WOD_SAVE_XMM128_FAR przesunięcie wymaga pełnej wartości 32-bitowej

Note

W wersji 1 unwind dyrektywy pochodzą po instrukcji. W wersji 3 unwind dyrektywy są przed instrukcją. .SAVEXMM128 musi pojawić się przed opisem instrukcji. To wymaganie jest przeciwieństwem wersji 1, gdzie dyrektywa jest zgodna z instrukcją.

Przykład dla 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

Odpowiednik epilogu to . RESTOREXMM128.

Zobacz też

x64 Unwind, wersja 3 (eksperymentalna)
Odwołanie do dyrektyw
Gramatyka MASM BNF
MASM dla wersji x64 (ml64.exe)