.ALLOCSTACK

.ALLOCSTACK prologue'daki geçerli uzaklık için belirtilen boyuta sahip bir UWOP_ALLOC_SMALL veyaUWOP_ALLOC_LARGE oluşturur.

Sözdizimi

.ALLOCSTACK Boyutu

Açıklamalar

Microsoft Assembler (MASM), belirli bir boyut için en verimli kodlamayı seçer.

.ALLOCSTACKkullanıcıların bir çerçeve işlevinin nasıl geri alınacağını ve yalnızca PROCFRAME bildiriminden öğesine genişletilen prologue içinde nasıl izin verileceğini belirtmesine izin verir ml64.exe. 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.
  • .ALLOCSTACK 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 sarmayı amaçladıkları kodu sarmalayın.

Boyut işleneni 8'in katı olmalıdır.

En son muadili ise . FREESTACK.

Örnek: Bir geri sarma sürüm 3 unwind/exception işleyicisi belirtme

Aşağıdaki örnek, bir geri alma/özel durum işleyicisinin nasıl belirtileceğini gösterir:

; ml64 ex3.asm /link /entry:Example3 /SUBSYSTEM:Console
text SEGMENT
PUBLIC Example3
PUBLIC Example3_UW
Example3_UW PROC
   ; exception/unwind handler body

   ret 0

Example3_UW ENDP

Example3 PROC FRAME : Example3_UW

   sub rsp, 16
.allocstack 16

.endprolog

   ; function body
    add rsp, 16
   ret 0

Example3 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.

.ALLOCSTACK prologdaki geçerli uzaklık için belirtilen boyuta sahip bir WOD_ALLOC_SMALL, WOD_ALLOC_LARGE, veya WOD_ALLOC_HUGE Unwind Sürüm 3 unwind kod girdisi oluşturur.

.ALLOCSTACK açıklandığı yönergedensub rsp, N önce görünmelidir. Bu gereksinim, yönergenin yönergeyi izlediği Sürüm 1'in tersidir.

MASM, ayırma boyutuna 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

Sürüm 1 yalnızca UWOP_ALLOC_SMALL veya UWOP_ALLOC_LARGEoluşturur. Sürüm 3, WOD_ALLOC_HUGE32 KB'tan büyük ayırmalar için üçüncü bir değişken ekler.

Uyarı

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 ex3.asm /unwindv3 /link /entry:Example3 /SUBSYSTEM:Console
text SEGMENT
PUBLIC Example3
PUBLIC Example3_UW
Example3_UW PROC
   ; exception/unwind handler body

   ret 0

Example3_UW ENDP

Example3 PROC FRAME : Example3_UW

.allocstack 16
   sub rsp, 16

.endprolog

   ; function body
    add rsp, 16
   ret 0

Example3 ENDP
text ENDS
END

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