.PUSHREG
Generuje wpis kodu odwijanego UWOP_PUSH_NONVOL
dla określonego numeru rejestru przy użyciu bieżącego przesunięcia w prologu.
Składnia
. Rejestracja PUSHREG
Uwagi
. FUNKCJA PUSHREG umożliwia użytkownikom ml64.exe określenie sposobu odwijania funkcji ramki i jest dozwolone tylko w prologu, który rozciąga się od deklaracji PROC FRAME do . ENDPROLOG , dyrektywa. Te dyrektywy nie generują kodu; generują .xdata
tylko wartości i .pdata
. . ELEMENT PUSHREG powinien być poprzedzony instrukcjami, które faktycznie implementują akcje, które mają być niezauczone. Dobrym rozwiązaniem jest zawijanie zarówno dyrektyw odwijania, jak i kodu, który mają na celu odwinięcie makra w celu zapewnienia porozumienia.
rejestracja może być jedną z:
RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15.
Aby uzyskać więcej informacji, zobacz MASM for x64 (ml64.exe).
Przykład
opis
W poniższym przykładzie pokazano, jak wypychać rejestry nietrwałe.
Kod
; 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