Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Gera uma entrada de código de desenrolamento UWOP_SAVE_XMM128 ou UWOP_SAVE_XMM128_FAR para o registro XMM e o deslocamento especificados usando o deslocamento do prólogo atual. Microsoft Assembler (MASM) escolhe a codificação mais eficiente.
Sintaxe
.SAVEXMM128xmmreg , deslocamento
Comentários
Use .SAVEXMM128 com ml64.exe para especificar como uma função de quadro desenrola. Você só pode usá-lo dentro do prólogo, que se estende da PROCFRAME declaração para a . Diretiva ENDPROLOG . Essas diretivas geram metadados de desenrolamento (.xdata e .pdata seções), mas não produzem código executável. Preceda .SAVEXMM128 as instruções que realmente implementam as ações a serem desfeitos. Para garantir o acordo, embrulhe as diretivas de desenrolamento e o código que elas devem descontrair em uma macro.
offset deve ser um múltiplo de 16.
Descontrair o comportamento da versão 3
Importante
O suporte ao descontrair versão 3 é experimental e está sujeito a alterações. Habilite-o usando ml64.exe /unwindv3.
No Unwind Versão 3, .SAVEXMM128 emite uma WOD_SAVE_XMM128 ou uma WOD_SAVE_XMM128_FAR entrada de código de desenrolamento. Microsoft Assembler (MASM) seleciona a codificação mais eficiente com base no tamanho de offset:
| Desenredar código | Condição |
|---|---|
WOD_SAVE_XMM128 |
deslocamento pode ser codificado como um valor dimensionado de 16 bits |
WOD_SAVE_XMM128_FAR |
deslocamento requer um valor completo de 32 bits |
Note
No Descontrair versão 1, as diretivas vêm após a instrução. No Unwind Versão 3, as diretivas vêm antes da instrução.
.SAVEXMM128 deve aparecer antes da instrução descrita. Esse requisito é o oposto da versão 1, em que a diretiva segue a instrução.
Exemplo de desenrolamento3
; 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
O equivalente do epílogo é . RESTOREXMM128.
Confira também
x64 Descontrair versão 3 (experimental)
Referência de diretivas
Gramática BNF do MASM
MASM para x64 (ml64.exe)