. POPFRAME

Menghasilkan entri kode unwind data (WOD) WOD_PUSH_CANONICAL_FRAME Windows di epilog.

Syntax

. POPFRAMECODE | value

Parameter-parameternya

value
Pengubah numerik opsional dalam rentang 0–255.
Saling eksklusif dengan CODE. Jika Anda menentukan kata kunci CODE opsional, entri kode unwind menerima pengubah 1.
Jika Anda menentukan nilai numerik opsional sebagai gantinya, nilai tersebut akan menerima nilai yang ditentukan.
Jika Anda tidak meneruskan argumen, nilainya adalah 0.

Komentar

Important

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

. Direktif POPFRAME memungkinkan ml64.exe pengguna menentukan bagaimana fungsi bingkai melepas lelah dalam epilog. Anda hanya dapat menggunakannya dalam wilayah epilog, antara . BEGINEPILOG dan . ENDEPILOG.

  • . POPFRAME hanya valid di Unwind Versi 3. Ini adalah rekan epilog dari . PUSHFRAME. Nilai operand harus cocok dengan yang sesuai. PUSHFRAME dalam prolog.
  • Di Unwind Versi 3, . POPFRAME harus muncul sebelum instruksi yang mengimplementasikan tindakan yang akan dibatalkan. Untuk memastikan perjanjian, bungkus arahan unwind dan kode yang dimaksudkan untuk melepas lelah dalam makro.
  • Dalam Unwind Versi 3, arahan epilog wajib untuk pembuatan kode unwind epilog. Tidak ada kode epilog unwind yang dipancarkan tanpa sepasang .BEGINEPILOG/.ENDEPILOG .
  • Arahan ini menghasilkan metadata unwind (.xdata dan .pdata bagian) tetapi tidak menghasilkan kode yang dapat dieksekusi.

Note

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

Contoh untuk unwindv3

Contoh berikut menunjukkan cara menggunakan . POPFRAME dalam epilog untuk menunjukkan handler interupsi yang mendorong dan memunculkan bingkai mesin kanonis.

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushframe
   .pushreg rbx
   push rbx
   .allocstack 32
   sub rsp, 32
.endprolog
   ; interrupt handler body ...
   .beginepilog
   .freestack 32
   add rsp, 32
   .popreg rbx
   pop rbx
   .popframe
   .endepilog
   iretq
Example1 ENDP
_text ENDS
END

Baca juga

x64 Unwind Versi 3 (eksperimental)
. PUSHFRAME
. BEGINEPILOG
. ENDEPILOG
Tata Bahasa MASM BNF