. PUSH2REG

Prologue'daki geçerli uzaklığı kullanarak belirtilen yazmaç çifti için iki yazmaçlı push unwind kod girişi oluşturur.

Syntax

.PUSH2REG register1, register2

Parametreler

kayıt1
gönderecek ilk kayıt. Genel amaçlı bir 64 bit yazmaç olmalıdır.

register2
gönderim için ikinci yazmaç. Genel amaçlı bir 64 bit yazmaç olmalıdır.

register1 ve register2'nin her biri ş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.

Remarks

Important

Bu yönerge deneyseldir ve değiştirilebilir. kullanarak ml64.exe /unwindv3Sürüm 3'e geri sarmayı etkinleştirin.

  • Çerçeve işlevinin nasıl geri sarılacağını belirtmek için kullanın .PUSH2REG . Bu yönergeyi yalnızca PROCFRAME bildiriminden öğesine genişleten prologue içinde kullanabilirsiniz . 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. Sürüm 3'te, .PUSH2REG kaldırılacak eylemi uygulayan yönergeden önce görünmelidir. Sözleşmeyi güvence altına almak için hem unwind yönergelerini hem de bir makroda geri sarmayı amaçladıkları kodu sarmak iyi bir uygulamadır.
  • register1 ve register2 ardışık ve artan sıradaysa MASM bir WOD_PUSH_CONSECUTIVE_2 geri sarma kodu yayar. Aksi takdirde, MASM bir WOD_PUSH2 geri sarma kodu yayar.

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.

unwindv3 örneği

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

Ayrıca bakınız

x64 Sürüm 3'i geri sarma (deneysel)
Yönergeler Başvurusu
. POP2REG
. PUSHREG
. ENDPROLOG
MASM BNF Dil Bilgisi