.SAVEREG

Génère une ou une UWOP_SAVE_NONVOLUWOP_SAVE_NONVOL_FAR entrée de code de déroulement pour le registre spécifié (reg) et le décalage (offset) à l’aide du décalage de prologue actuel. Microsoft Assembleur (MASM) choisit l’encodage le plus efficace.

Syntaxe

.SAVEREG reg,offset

Notes

Utilisez-la .SAVEREGml64.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 .SAVEREG 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.

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, .SAVEREG émet une ou une WOD_SAVE_NONVOLWOD_SAVE_NONVOL_FAR entrée de code de déroulement. MASM sélectionne l’encodage le plus efficace en fonction de la taille du décalage :

Code de déroulement Pathologie
WOD_SAVE_NONVOL offset peut être encodé en tant que valeur 16 bits mise à l’échelle
WOD_SAVE_NONVOL_FAR offset nécessite une valeur complète 32 bits

Note

Dans Unwind Version 1, la directive apparaît après l’instruction correspondante. Dans Unwind Version 3, la directive apparaît avant l’instruction. .SAVEREG 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 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

L’épilogue équivalent est . RESTOREREG.

Voir aussi

x64 Unwind Version 3 (expérimentale)
Informations de référence sur les directives
MASM pour x64 (ml64.exe)
Grammaire MASM BNF