Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
.SAVEXMM128xmmreg , 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)