Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
.SAVEXMM128xmmreg , 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)