. UNSETFRAME

Genera una WOD_SET_FPREG voce di codice di rimozione per il registro e l'offset specificati utilizzando l'offset corrente nell'epilogo.

Sintassi

.UNSETFRAME reg, offset

Parametri

reg
Registro del puntatore al fotogramma per annullare l'impostazione.

offset
Offset nel frame dello stack in cui è stato stabilito il puntatore al frame.

Osservazioni:

Importante

Questa direttiva è sperimentale ed è soggetta a modifiche. Abilitare la versione di rimozione 3 con ml64.exe /unwindv3.

.UNSETFRAME è valido solo in Rimozione versione 3. È l'epilogo controparte di . SETFRAME.

.UNSETFRAME è consentito solo all'interno di un'area epilogo, tra . BEGINEPILOG e . ENDEPILOG. Queste direttive generano metadati di rimozione (.xdata e .pdata sezioni) ma non producono codice eseguibile.
In Rimozione versione 3, .UNSETFRAME deve essere visualizzato prima dell'istruzione che ripristina il puntatore dello stack dal registro del puntatore del fotogramma.
È consigliabile eseguire il wrapping di entrambe le direttive di rimozione e il codice che devono rimuovere in una macro per garantire l'accordo.

In Rimozione versione 3, le direttive dell'epilogo sono obbligatorie per la generazione del codice di rimozione dell'epilogo. Nessun codice di rimozione dell'epilogo viene generato senza una .BEGINEPILOG/.ENDEPILOG coppia.

Note

In Rimozione versione 1 la direttiva viene visualizzata dopo l'istruzione corrispondente. In Rimozione versione 3 la direttiva viene visualizzata prima dell'istruzione.

Esempio di rimozionev3

; ml64 /unwindv3 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
   .pushreg rbp
   push rbp
   .allocstack 010h
   sub rsp, 010h
   .setframe rbp, 0
   mov rbp, rsp
.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
   .beginepilog
   .unsetframe rbp, 0
   mov rsp, rbp
   .freestack 010h
   add rsp, 010h
   .popreg rbp
   pop rbp
   .endepilog
   ret
frmex2 ENDP
_text ENDS
END

Vedere anche

Versione di rimozione x64 3 (sperimentale)
Riferimento alle direttive
. SETFRAME
. BEGINEPILOG
Grammatica BNF MASM