.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