. RESTOREREG

Gera uma WOD_SAVE_NONVOL ou uma WOD_SAVE_NONVOL_FAR entrada de código de desenrolamento para o registro e deslocamento especificados, usando o deslocamento de epílogo atual.

Syntax

.RESTOREREG reg, deslocamento

Parâmetros

reg
O registro nãovolatile a ser restaurado.

desvio
O deslocamento de pilha do qual o registro é restaurado.

Observações

Importante

Esta diretiva é experimental e está sujeita a alterações. Habilite o Descontrair versão 3 usando ml64.exe /unwindv3.

.RESTOREREG é válido apenas na Versão 3 do Unwind. É o epílogo equivalente a . SAVEREG.

Microsoft Assembler (MASM) escolhe a codificação mais eficiente para um determinado deslocamento.

  • .RESTOREREG só é permitido dentro de uma região de epílogo, entre . BEGINEPILOG e . ENDEPILOG.
  • Essas diretivas geram metadados de desenrolamento (.xdata e .pdata seções), mas não produzem código executável.
  • No Unwind Versão 3, .RESTOREREG deve aparecer antes da instrução que carrega o registro da pilha.
  • Para garantir o acordo, embrulhe as diretivas de desenrolamento e o código que elas devem descontrair em uma macro.
  • No Unwind Versão 3, as diretivas de epílogo são obrigatórias para a geração de código de desenrolamento do epílogo. Nenhum epílogo desenrola códigos são emitidos sem um .BEGINEPILOG/.ENDEPILOG par.

Note

No Descontrair versão 1, a diretiva é exibida após a instrução correspondente. No Descontrair versão 3, a diretiva é exibida antes da instrução.

Exemplo de desenrolamento3

; 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 ...
   .beginepilog
   .restorereg rsi, 8
   mov rsi, [rsp+8]
   .restorereg rbx, 0
   mov rbx, [rsp]
   .freestack 020h
   add rsp, 020h
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Consulte também

x64 Descontrair versão 3 (experimental)
Referência de diretivas
. SAVEREG
. BEGINEPILOG
Gramática BNF do MASM