Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Genera una WOD_SET_FPREG voce di codice di rimozione per il registro e l'offset specificati utilizzando l'offset corrente nell'epilogo.
Sintassi
.UNSETFRAMEreg, 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