Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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