.PUSHREG
Generiert einen UWOP_PUSH_NONVOL
Entspanncodeeintrag für die angegebene Registernummer mithilfe des aktuellen Offsets im Prolog.
Syntax
.PUSHREG Register
Hinweise
. PUSHREG ermöglicht es ml64.exe Benutzern anzugeben, wie sich eine Framefunktion ablöst und nur innerhalb des Prologs zulässig ist, der sich von der PROC FRAME-Deklaration auf die . ENDPROLOG-Direktive . Diese Direktiven generieren keinen Code; sie generieren .xdata
und .pdata
. . PUSHREG sollte Anweisungen vorangestellt werden, mit denen die Aktionen tatsächlich umgesetzt werden, um sich zu entwunden. Es empfiehlt sich, sowohl die Entspannrichtlinien als auch den Code, mit dem sie sich in einem Makro entspannen sollen, um eine Einigung sicherzustellen.
Das Register kann eine der folgenden Sein:
RAX | RCX | RDX | RBX | RDI | RSI | RSP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15.
Weitere Informationen finden Sie unter MASM für x64 (ml64.exe).
Beispiel
Beschreibung
Das folgende Beispiel zeigt, wie nicht veränderliche Register verschoben werden.
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