.SETFRAME
Füllt das Feld und den Offset in den Entladeinformationen mit dem angegebenen Register (reg) und den Offset des Rahmens registers aus (offset). Der Offset muss ein Vielfaches von 16 und kleiner oder gleich 240 sein. Diese Direktive UWOP_SET_FPREG Entladecode generiert außerdem einen Eintrag für das angegebene Register mithilfe des aktuellen Offset vorläufige.
.SETFRAME reg, offset
Hinweise
.SETFRAME ml64.exe-Benutzern kann, um anzugeben wie Entladungen eine Rahmenfunktion und ist nur innerhalb des Prologs zugelassen, die von der Deklaration PROC FRAME auf .ENDPROLOG-Direktive erstreckt. Diese Direktive kein Code generiert. generieren und .xdata nur .pdata. .SETFRAME sollte von den Anweisungen vorangestellt werden, die eigentlich selbst implementieren die Aktionen zu entladen. Es empfiehlt sich, die Entladungs Direktiven und den Code umschlossen werden, die sie impliziert werden, die in einem Makro entladen, um Vertrags sicherzustellen.
Weitere Informationen finden Sie unter MASM für x64 (ml64.exe).
Beispiel
Beschreibung
Das folgende Beispiel zeigt, wie Sie einen Framezeiger verwendet:
Code
; 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