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.
.ALLOCSTACK prologue'daki geçerli uzaklık için belirtilen boyuta sahip bir UWOP_ALLOC_SMALL veyaUWOP_ALLOC_LARGE oluşturur.
Sözdizimi
.ALLOCSTACKBoyutu
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 (
.xdatave.pdatabölümleri) oluşturur ancak yürütülebilir kod üretmez. -
.ALLOCSTACKKaldı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