. FREESTACK

Epilogdaki geçerli uzaklık için belirtilen boyuta sahip bir WOD_ALLOC_SMALL, WOD_ALLOC_LARGE veya WOD_ALLOC_HUGE geri sarma kodu girişi oluşturur.

Syntax

öğesini seçin. FREESTACKboyutu

Parametreler

boyut
Yığından serbest bırakılma bayt sayısı. 8'in katı olmalıdır.

Remarks

Important

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

  • kullanabilirsiniz . FREESTACK yalnızca Unwind Sürüm 3'te. Bu, 'nin en önemli muadili . ALLOCSTACK.
  • kullanabilirsiniz . FREESTACK yalnızca bir en son bölge içinde, arasında . BEGINEPILOG ve . ENDEPILOG.
  • Sürüm 3'te, . FREESTACK, yığın ayırmayı add rsp, N 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 sarmalamaları gereken kodu sarmalayın.
  • Bu yönergeler geri sarma meta verileri (.xdata ve .pdata bölümleri) oluşturur ancak yürütülebilir kod üretmez.
  • Microsoft Assembler (MASM), belirli bir boyut için en verimli kodlamayı seçer.

MASM, boyuta bağlı olarak üç geri sarma kodundan birini yayar:

Kodu geri sarma Condition
WOD_ALLOC_SMALL boyut ≤ 128 bayt
WOD_ALLOC_LARGE boyut ≤ 32 KB
WOD_ALLOC_HUGE Boyutu> 32 KB

Unwind Sürüm 3'te, epilogue unwind kod oluşturma için epilog yönergeleri zorunlu hale geldi. Derleyici, bir çift olmadan .BEGINEPILOG/.ENDEPILOG epilogue unwind kodları yaymaz.

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
   .allocstack 16
   sub rsp, 16
.endprolog
   ; function body
   .beginepilog
   .freestack 16
   add rsp, 16
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Ayrıca bakınız

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