Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
.SAVEREGreg,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 (
.xdataet.pdatades sections) mais ne produisent pas de code exécutable. - Précèdez
.SAVEREGles 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