Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Genera una entrada de código de desenredado UWOP_SAVE_XMM128 o UWOP_SAVE_XMM128_FAR para el registro XMM y el desplazamiento especificados mediante el desplazamiento de prólogo actual. Microsoft Ensamblador (MASM) elige la codificación más eficaz.
Sintaxis
.SAVEXMM128xmmreg , offset
Comentarios
Use .SAVEXMM128 con ml64.exe para especificar cómo se desenreda una función de marco. Solo se puede usar en el prólogo, que se extiende desde la PROCFRAME declaración a . Directiva ENDPROLOG . Estas directivas generan metadatos de desenredado (.xdata y .pdata secciones), pero no generan código ejecutable. Precede .SAVEXMM128 a las instrucciones que realmente implementan las acciones que se van a desenlazar. Para garantizar el acuerdo, encapsula las directivas de desenredado y el código que están diseñados para desenredar en una macro.
offset debe ser un múltiplo de 16.
Comportamiento de desenredado versión 3
Importante
La compatibilidad con Desenredado versión 3 es experimental y está sujeta a cambios. Habilite mediante ml64.exe /unwindv3.
En Desenredado versión 3, .SAVEXMM128 emite una WOD_SAVE_XMM128 entrada de código de desenredado o .WOD_SAVE_XMM128_FAR Microsoft Ensamblador (MASM) selecciona la codificación más eficaz en función del tamaño de offset:
| Código de desenredado | Condition |
|---|---|
WOD_SAVE_XMM128 |
offset se puede codificar como un valor de 16 bits escalado |
WOD_SAVE_XMM128_FAR |
offset requiere un valor completo de 32 bits |
Note
En Desenredar versión 1, las directivas vienen después de la instrucción . En Desenredado versión 3, las directivas vienen antes de la instrucción .
.SAVEXMM128 debe aparecer antes de la instrucción que describe. Este requisito es lo contrario a la versión 1, donde la directiva sigue la instrucción .
Ejemplo de desenredado3
; 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
El homólogo de epílogo es . RESTOREXMM128.
Consulte también
x64 Desenredado versión 3 (experimental)
Referencia de directivas
Gramática BNF de MASM
MASM para x64 (ml64.exe)