.SETFRAME
Belirtilen yazmaç (reg) ve uzaklık (uzaklık) kullanarak geri sarma bilgilerinde çerçeve yazmaç alanını ve uzaklığı doldurur. Uzaklık 16'nın katı ve 240'tan küçük veya buna eşit olmalıdır. Bu yönerge ayrıca geçerli prologue uzaklığını kullanarak belirtilen kayıt için bir UWOP_SET_FPREG
geri sarma kodu girişi oluşturur.
Sözdizimi
. SETFRAME reg, uzaklık
Açıklamalar
. SETFRAME, ml64.exe kullanıcıların bir çerçeve işlevinin nasıl geri alınacağını belirtmesine olanak tanır ve yalnızca PROC FRAME bildiriminden öğesine genişletilen prolog içinde izin verilir. ENDPROLOG yönergesi. Bu yönergeler kod oluşturmaz; yalnızca ve .pdata
oluştururlar.xdata
. . SETFRAME'in önünde, kaldırılacak eylemleri uygulayan yönergeler bulunmalıdır. Sözleşmeyi güvence altına almak için hem unwind yönergelerini hem de bir makroda geri sarmayı amaçladıkları kodu sarmak iyi bir uygulamadır.
Daha fazla bilgi için bkz. x64 için MASM (ml64.exe).
Örnek
Açıklama
Aşağıdaki örnekte çerçeve işaretçisinin nasıl kullanılacağı gösterilmektedir:
Kod
; 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