Condividi tramite


.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 x64 (ml64.exe).

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

Vedere anche

Altre risorse

Riferimento a direttive