Condividi tramite


.SETFRAME

Inserisce il campo registro frame e l'offset nelle informazioni di rimozione utilizzando il registro (reg) e l'offset specificati (offset). L'offset deve essere un multiplo di 16 e minore o uguale a 240. Questa direttiva genera anche una UWOP_SET_FPREG voce di codice di rimozione per il registro specificato utilizzando l'offset del prologo corrente.

Sintassi

. SETFRAME reg, offset

Osservazioni:

. SETFRAME consente agli utenti di ml64.exe di specificare la modalità di rimozione di una funzione frame ed è consentita solo all'interno del prologo, che si estende dalla dichiarazione PROC FRAME all'oggetto . Direttiva ENDPROLOG . Queste direttive non generano codice; generano .xdata solo e .pdata. . SETFRAME deve essere preceduto da istruzioni che implementano effettivamente le azioni da annullare. È consigliabile eseguire il wrapping di entrambe le direttive di rimozione e il codice che devono rimuovere in una macro per garantire l'accordo.

Per altre informazioni, vedere MASM per x64 (ml64.exe).

Esempio

Descrizione

L'esempio seguente illustra come usare un puntatore a fotogrammi:

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

Vedi anche

Riferimento alle direttive
Grammatica BNF MASM