Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
.ALLOCSTACK menghasilkan UWOP_ALLOC_SMALL atau UWOP_ALLOC_LARGE dengan ukuran yang ditentukan untuk offset saat ini dalam prolog.
Sintaks
.ALLOCSTACKUkuran
Keterangan
Microsoft Assembler (MASM) memilih pengodean yang paling efisien untuk ukuran tertentu.
.ALLOCSTACK memungkinkan ml64.exe pengguna untuk menentukan bagaimana fungsi bingkai melepas lelah dan hanya diizinkan dalam prolog, yang meluas dari deklarasi PROCFRAME ke . Direktif ENDPROLOG.
- Arahan ini menghasilkan metadata unwind (
.xdatadan.pdatabagian) tetapi tidak menghasilkan kode yang dapat dieksekusi. - Awali
.ALLOCSTACKdengan instruksi yang benar-benar mengimplementasikan tindakan yang akan dilepaskan. Bungkus arahan unwind dan kode yang dimaksudkan untuk melepas lelah dalam makro untuk memastikan perjanjian.
Operand ukuran harus kelipatan 8.
Rekan epilog adalah . FREESTACK.
Contoh: tentukan handler unwind versi 3 unwind/exception
Contoh berikut menunjukkan cara menentukan handler unwind/exception:
; 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
Melepas penat perilaku Versi 3
Important
Dukungan Unwind Versi 3 bersifat eksperimental dan dapat berubah. Aktifkan dengan menggunakan ml64.exe /unwindv3.
.ALLOCSTACK
WOD_ALLOC_SMALLmenghasilkan entri kode unwind , , WOD_ALLOC_LARGEatau WOD_ALLOC_HUGE Unwind Versi 3 dengan ukuran yang ditentukan untuk offset saat ini dalam prolog.
.ALLOCSTACK harus muncul sebelum instruksi yang sub rsp, N dijelaskannya. Persyaratan ini adalah kebalikan dari Versi 1, di mana arahan mengikuti instruksi.
MASM memancarkan salah satu dari tiga kode unwind tergantung pada ukuran alokasi:
| Lepaskan kode | Keadaan |
|---|---|
WOD_ALLOC_SMALL |
ukuran ≤ 128 byte |
WOD_ALLOC_LARGE |
ukuran ≤ 32 KB |
WOD_ALLOC_HUGE |
Ukuran> 32 KB |
Versi 1 hanya UWOP_ALLOC_SMALL menghasilkan atau UWOP_ALLOC_LARGE. Versi 3 menambahkan varian ketiga, WOD_ALLOC_HUGE, untuk alokasi yang lebih besar dari 32 KB.
Nota
Di Unwind Versi 1, arahan muncul setelah instruksi yang sesuai. Di Unwind Versi 3, arahan muncul sebelum instruksi.
Contoh untuk unwindv3
; 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
Lihat juga
x64 Unwind Versi 3 (eksperimental)
Referensi Arahan
Tata Bahasa MASM BNF
MASM untuk x64 (ml64.exe)