Bagikan melalui


.SETFRAME

Mengisi bidang register bingkai dan offset dalam informasi unwind menggunakan register (reg) dan offset yang ditentukan (offset). Offset harus kelipatan 16 dan kurang dari atau sama dengan 240. Arahan ini juga menghasilkan UWOP_SET_FPREG entri kode unwind untuk register yang ditentukan menggunakan offset prolog saat ini.

Sintaks

. SETFRAME reg, offset

Keterangan

. SETFRAME memungkinkan pengguna ml64.exe menentukan bagaimana fungsi bingkai melepas lelah, dan hanya diizinkan dalam prolog, yang meluas dari deklarasi PROC FRAME ke . Direktif ENDPROLOG . Arahan ini tidak menghasilkan kode; mereka hanya menghasilkan .xdata dan .pdata. . SETFRAME harus didahului oleh instruksi yang benar-benar mengimplementasikan tindakan yang akan dibatalkan. Ini adalah praktik yang baik untuk membungkus arahan unwind dan kode yang dimaksudkan untuk bersantai dalam makro untuk memastikan perjanjian.

Untuk informasi selengkapnya, lihat MASM untuk x64 (ml64.exe).

Sampel

Deskripsi

Contoh berikut menunjukkan cara menggunakan penunjuk bingkai:

Kode

; ml64 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
   push rbp
.pushreg rbp
   sub rsp, 010h
.allocstack 010h
   mov rbp, rsp
.setframe rbp, 0
.endprolog
   ; modify the stack pointer outside of the prologue (similar to alloca)
   sub rsp, 060h

   ; we can unwind from the following AV because of the frame pointer
   mov rax, 0
   mov rax, [rax] ; AV!

   add rsp, 060h
   add rsp, 010h
   pop rbp
   ret
frmex2 ENDP
_text ENDS
END

Lihat juga

Referensi arahan
Tata Bahasa MASM BNF