. SAVEREG

Gera uma UWOP_SAVE_NONVOL ou uma UWOP_SAVE_NONVOL_FAR entrada de código de desenrolar para o registo (reg) especificado e um deslocamento (deslocamento) usando o deslocamento prólogo atual. O Microsoft Assembler (MASM) escolhe a codificação mais eficiente.

Sintaxe

.SAVEREG reg,offset

Remarks

Use .SAVEREG com ml64.exe para especificar como uma função de frame se desenrola. Só pode usá-lo dentro do prólogo, que se estende da PROCFRAME declaração até ao . Diretiva ENDPROLOG .

  • Estas diretivas geram metadados de desmantelamento (.xdata e .pdata secções), mas não produzem código executável.
  • Começa .SAVEREG com instruções que realmente implementam as ações a desenrolar.
  • Para garantir o acordo, envolve tanto as diretivas de desmantelamento como o código que devem desfazer numa macro.

Comportamento do Unwind Versão 3

Importante

O suporte ao Unwind Versão 3 é experimental e está sujeito a alterações. Ative-o usando ml64.exe /unwindv3.

No Unwind Versão 3, .SAVEREG emite ou uma WOD_SAVE_NONVOLWOD_SAVE_NONVOL_FAR entrada de código unwind. O MASM seleciona a codificação mais eficiente com base no tamanho do deslocamento:

Código de desmontagem Condition
WOD_SAVE_NONVOL O offset pode ser codificado como um valor escalado de 16 bits
WOD_SAVE_NONVOL_FAR O offset requer um valor completo de 32 bits

Observação

No Unwind Versão 1, a diretiva aparece após a instrução correspondente. Na Versão 3 de Desenrolar, a diretiva aparece antes da instrução. .SAVEREG deve aparecer antes da instrução que descreve. Este requisito é o oposto da Versão 1, onde a diretiva segue a instrução.

Exemplo para unwindv3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .allocstack 020h
   sub rsp, 020h
   .savereg rbx, 0
   mov [rsp], rbx
   .savereg rsi, 8
   mov [rsp+8], rsi
.endprolog
   ; rest of function ...
   mov rsi, [rsp+8]
   mov rbx, [rsp]
   add rsp, 020h
   ret
Example1 ENDP
_text ENDS
END

A contraparte do epílogo é . RESTOREREG.

Ver também

x64 Unwind Versão 3 (experimental)
Referência das diretivas
MASM para x64 (ml64.exe)
MASM BNF Gramática