.PUSHREG

Prologue'daki geçerli uzaklığı kullanarak belirtilen yazmaç numarası için bir UWOP_PUSH_NONVOL geri sarma kodu girişi oluşturur.

Sözdizimi

. PUSHREG yazmaç

register şu durumlardan biri olabilir:
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15

Sürüm 3'e kadar geri sarma, kayıt desteğini R16–R31'i içerecek şekilde genişletir. register şu durumlardan biri olabilir:
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31

Açıklamalar

Çerçeve işlevinin nasıl geri sarılacağını belirtmek için ile ml64.exe kullanın.PUSHREG. Prolog içinde yalnızca prolog içinde kullanabilirsiniz .PUSHREG . Bu, PROCFRAME bildiriminden öğesine kadar uzanır . ENDPROLOG yönergesi. Bu yönergeler geri sarma meta verileri (.xdata ve .pdata bölümleri) oluşturur ancak yürütülebilir kod üretmez. .PUSHREG Kaldırılacak eylemleri uygulayan yönergelerin önüne geçin. Sözleşmeyi güvence altına almak için hem unwind yönergelerini hem de bir makroda geri sarmalamaları gereken kodu sarmalayın.

Kod

Aşağıdaki örnek, kalıcı olmayan yazmaçların nasıl gönder yapılacağını gösterir.

; 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

Sürüm 3'e geri sarma davranışı

Important

Sürüm 3'e geri sarma desteği deneyseldir ve değiştirilebilir. kullanarak ml64.exe /unwindv3etkinleştirin.

Note

Sürüm 1'i Geri Al bölümünde yönerge ilgili yönergeden sonra görünür. Sürüm 3'te yönerge yönergeden önce görünür. Sürüm 3'te .PUSHREG bir WOD_PUSH geri sarma kodu girdisi oluşturur ve açıklandığı yönergedenpush reg önce görünmelidir. Bu gereksinim, yönergenin yönergeyi izlediği Sürüm 1'in tersidir.

unwindv3 örneği

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushreg r10
   push r10
   .pushreg r15
   push r15
   .pushreg rbx
   push rbx
   .pushreg rsi
   push rsi
.endprolog
   ; rest of function ...
   ret
Example1 ENDP
_text ENDS
END

En son muadili ise . POPREG.

Ayrıca bkz.

x64 Sürüm 3'i geri sarma (deneysel)
Yönergeler başvurusu
MASM BNF Dil Bilgisi
x64 (ml64.exe) için MASM