.PUSHREG
Génère une UWOP_PUSH_NONVOL
entrée de code de déroulement pour le numéro de registre spécifié à l’aide du décalage actuel dans le prologue.
Syntaxe
. Registre PUSHREG
Notes
. PUSHREG permet ml64.exe utilisateurs de spécifier comment une fonction frame se déroule et est uniquement autorisée dans le prologue, qui s’étend de la déclaration PROC FRAME à l’objet . Directive ENDPROLOG . Ces directives ne génèrent pas de code ; ils génèrent .xdata
uniquement et .pdata
. . PUSHREG doit être précédé d’instructions qui implémentent réellement les actions à annuler. Il est recommandé d’encapsuler les directives de déroulement et le code qu’ils sont destinés à dérouler dans une macro pour garantir l’accord.
le registre peut être l’un des suivants :
RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15.
Pour plus d’informations, consultez MASM pour x64 (ml64.exe).
Exemple
Description
L’exemple suivant montre comment envoyer (push) des registres non volatiles.
Code
; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
push r10
.pushreg r10
push r15
.pushreg r15
push rbx
.pushreg rbx
push rsi
.pushreg rsi
.endprolog
; rest of function ...
ret
Example1 ENDP
_text ENDS
END
Voir aussi
Informations de référence sur les directives
Grammaire MASM BNF