. FREESTACK

Menghasilkan entri kode WOD_ALLOC_SMALL, WOD_ALLOC_LARGE, atau WOD_ALLOC_HUGE dengan ukuran yang ditentukan untuk offset saat ini di epilog.

Syntax

. Ukuran FREESTACK

Parameter-parameternya

ukuran
Jumlah byte yang akan dibatalkan alokasinya dari tumpukan. Harus kelipatan 8.

Komentar

Important

Arahan ini bersifat eksperimental dan dapat berubah. Aktifkan Unwind Versi 3 dengan menggunakan ml64.exe /unwindv3.

  • Anda dapat menggunakan . FREESTACK hanya di Unwind Versi 3. Ini adalah rekan epilog untuk . TUMPUKAN ALOKASI.
  • Anda dapat menggunakan . FREESTACK hanya dalam wilayah epilog, antara . BEGINEPILOG dan . ENDEPILOG.
  • Di Unwind Versi 3, . FREESTACK harus muncul sebelumadd rsp, N instruksi yang mengimplementasikan alokasi tumpukan.
  • Untuk memastikan perjanjian, bungkus arahan unwind dan kode yang dimaksudkan untuk melepas lelah dalam makro.
  • Arahan ini menghasilkan metadata unwind (.xdata dan .pdata bagian) tetapi tidak menghasilkan kode yang dapat dieksekusi.
  • Microsoft Assembler (MASM) memilih pengodean yang paling efisien untuk ukuran tertentu.

MASM memancarkan salah satu dari tiga kode unwind tergantung pada ukurannya:

Lepaskan kode Keadaan
WOD_ALLOC_SMALL ukuran ≤ 128 byte
WOD_ALLOC_LARGE ukuran ≤ 32 KB
WOD_ALLOC_HUGE Ukuran> 32 KB

Dalam Unwind Versi 3, arahan epilog wajib untuk pembuatan kode unwind epilog. Perakitan tidak mengeluarkan kode unwind epilog tanpa sepasang .BEGINEPILOG/.ENDEPILOG .

Note

Di Unwind Versi 1, arahan muncul setelah instruksi yang sesuai. Di Unwind Versi 3, arahan muncul sebelum instruksi.

Contoh untuk unwindv3

; 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

Baca juga

x64 Unwind Versi 3 (eksperimental)
Referensi Arahan
. TUMPUKAN ALOKASI
. BEGINEPILOG
Tata Bahasa MASM BNF