.SETFRAME
Riempie il campo e l'offset del registro del frame le informazioni di rimuovere utilizzando il log specificato (reg) e compensare (offset).L'offset deve essere un multiplo di 16 e minore o uguale a 240.Questa direttiva consente inoltre di generare un'eccezione UWOP_SET_FPREG voce di codice epilogo per il log specificato utilizzando offset corrente di prologo.
.SETFRAME reg, offset
Note
.SETFRAME Consente agli utenti di ml64.exe specificare come una funzione del frame rimossi e solo che è consentito all'interno del prologo, che si estende da PROC Dichiarazione di FRAME a .ENDPROLOG direttiva.Queste direttive non generano codice; generano solo .xdata e .pdata..SETFRAME Deve essere preceduto dalle istruzioni che effettivamente implementano le azioni essere rimosso.È opportuno eseguire il wrapping delle direttive di rimuovere che il codice da rimuovere in una macro per assicurarsi che il contratto.
Per ulteriori informazioni, vedere MASM per ml64.exe (x64).
Esempio
Descrizione
Di seguito viene illustrato come utilizzare un puntatore ai frame:
Codice
; 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