Sdílet prostřednictvím


.SETFRAME

Vyplní pole registru rámce a posun v informacích o odvíjení pomocí zadaného registru (reg) a posunu (posunu). Posun musí být násobek 16 a menší nebo roven 240. Tato direktiva také vygeneruje UWOP_SET_FPREG položku kódu pro zadaný registr pomocí aktuálního posunu prologu.

Syntaxe

. SETFRAME reg, posun

Poznámky

. SETFRAME umožňuje ml64.exe uživatelům určit, jak se funkce rámce odvíjeje, a je povolena pouze v rámci prologue, která rozšiřuje z deklarace PROC FRAME na . ENDPROLOG – direktiva. Tyto direktivy negenerují kód; pouze generují .xdata a .pdata. . PŘED příkazy SETFRAME by měly být uvedeny pokyny, které skutečně implementují akce, které se mají zrušit. Je vhodné zabalit direktivy unwind i kód, který mají v makru uvolnit, aby se zajistila smlouva.

Další informace najdete v masm pro platformu x64 (ml64.exe).

Vzorek

Popis

Následující ukázka ukazuje, jak použít ukazatel rámce:

Kód

; 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

Viz také

Odkaz na direktivy
Gramatika MASM BNF