.SAVEXMM128

Génère une UWOP_SAVE_XMM128 entrée de code de déroulement ou une UWOP_SAVE_XMM128_FAR entrée de code de déroulement pour le registre XMM et le décalage spécifiés à l’aide du décalage de prologue actuel. Microsoft Assembleur (MASM) choisit l’encodage le plus efficace.

Syntaxe

.SAVEXMM128 xmmreg , offset

Notes

Utilisez-la .SAVEXMM128ml64.exe pour spécifier la façon dont une fonction frame se déroule. Vous ne pouvez l’utiliser que dans le prologue, qui s’étend de la PROCFRAME déclaration au . Directive ENDPROLOG . Ces directives génèrent des métadonnées de déroulement (.xdata et .pdata des sections) mais ne produisent pas de code exécutable. Précèdez .SAVEXMM128 les instructions qui implémentent réellement les actions à annuler. Pour garantir l’accord, incluez à la fois les directives de déroulement et le code qu’ils sont destinés à décompresser dans une macro.

le décalage doit être un multiple de 16.

Déroulement du comportement version 3

Important

La prise en charge de la version 3 du déroulement est expérimentale et peut être modifiée. Activez-le à l’aide de ml64.exe /unwindv3.

Dans Unwind Version 3, .SAVEXMM128 émet une ou une WOD_SAVE_XMM128WOD_SAVE_XMM128_FAR entrée de code de déroulement. Microsoft Assembleur (MASM) sélectionne l’encodage le plus efficace en fonction de la taille de offset :

Code de déroulement Pathologie
WOD_SAVE_XMM128 offset peut être encodé en tant que valeur 16 bits mise à l’échelle
WOD_SAVE_XMM128_FAR offset nécessite une valeur complète 32 bits

Note

Dans Unwind Version 1, les directives viennent après l’instruction. Dans Unwind Version 3, les directives sont antérieures à l’instruction. .SAVEXMM128 doit apparaître avant l’instruction qu’elle décrit. Cette exigence est l’inverse de la version 1, où la directive suit l’instruction.

Exemple de déroulement3

; 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

L’épilogue équivalent est . RESTOREXMM128.

Voir aussi

x64 Unwind Version 3 (expérimentale)
Informations de référence sur les directives
Grammaire MASM BNF
MASM pour x64 (ml64.exe)