.SAVEREG

Geçerli prologue uzaklığını kullanarak belirtilen yazmaç (regUWOP_SAVE_NONVOLUWOP_SAVE_NONVOL_FAR) için bir veya geri sarma kodu girişi oluşturur. Microsoft Assembler (MASM) en verimli kodlamayı seçer.

Sözdizimi

.SAVEREG reg,offset

Açıklamalar

Çerçeve işlevinin nasıl geri sarılacağını belirtmek için ile ml64.exe kullanın.SAVEREG. Bunu yalnızca bildiriminden PROCFRAME öğ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.
  • .SAVEREG Kaldırılacak eylemleri gerçekten 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.

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.

Sürüm 3'te, .SAVEREG bir WOD_SAVE_NONVOL veya bir WOD_SAVE_NONVOL_FAR geri sarma kodu girdisi ya da ya da bir geri sarma kodu girişi yayar. MASM , uzaklık boyutuna göre en verimli kodlamayı seçer:

Kodu geri sarma Condition
WOD_SAVE_NONVOL uzaklık , ölçeklendirilmiş 16 bit değer olarak kodlanabilir
WOD_SAVE_NONVOL_FAR uzaklık tam 32 bit değer gerektirir

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. .SAVEREG açıklandığı yönergeden ö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
   .allocstack 020h
   sub rsp, 020h
   .savereg rbx, 0
   mov [rsp], rbx
   .savereg rsi, 8
   mov [rsp+8], rsi
.endprolog
   ; rest of function ...
   mov rsi, [rsp+8]
   mov rbx, [rsp]
   add rsp, 020h
   ret
Example1 ENDP
_text ENDS
END

En son muadili ise . RESTOREREG.

Ayrıca bkz.

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