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 voce di codice di rimozione WOD_PUSH_CANONICAL_FRAME Windows (WOD) nell'epilogo.
Sintassi
. POPFRAME ⟦valore CODE | ⟧
Parametri
valore
Modificatore numerico facoltativo nell'intervallo da 0 a 255.
Si escludono a vicenda con CODE. Se si specifica la parola chiave CODE facoltativa, la voce del codice di rimozione riceve un modificatore pari a 1.
Se invece si specifica un valore numerico facoltativo, riceve il valore specificato.
Se non si passa un argomento, il valore è 0.
Osservazioni:
Importante
Questa direttiva è sperimentale ed è soggetta a modifiche. Abilitare la versione di rimozione 3 con ml64.exe /unwindv3.
Oggetto . La direttiva POPFRAME consente agli utenti di ml64.exe specificare la modalità di rimozione di una funzione frame in un epilogo. È possibile usarlo solo all'interno di un'area epiloga, tra . BEGINEPILOG e . ENDEPILOG.
- . POPFRAME è valido solo in Rimozione versione 3. È la controparte epiloga di . PUSHFRAME. Il valore dell'operando deve corrispondere all'oggetto corrispondente. PUSHFRAME nel prologo.
- In Rimozione versione 3, . POPFRAME deve essere visualizzato prima dell'istruzione che implementa l'azione da annullare. Per garantire il contratto, eseguire il wrapping di entrambe le direttive di rimozione e il codice da rimuovere in una macro.
- 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/.ENDEPILOGcoppia. - Queste direttive generano metadati di rimozione (
.xdatae.pdatasezioni) ma non producono codice eseguibile.
Note
In Rimozione versione 1 le direttive vengono visualizzate dopo l'istruzione corrispondente. In Rimozione versione 3 le direttive vengono visualizzate prima dell'istruzione.
Esempio di rimozionev3
Nell'esempio seguente viene illustrato come usare . POPFRAME in un epilogo per indicare un gestore di interrupt che esegue il push e pop di un frame di computer canonico.
; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
.pushframe
.pushreg rbx
push rbx
.allocstack 32
sub rsp, 32
.endprolog
; interrupt handler body ...
.beginepilog
.freestack 32
add rsp, 32
.popreg rbx
pop rbx
.popframe
.endepilog
iretq
Example1 ENDP
_text ENDS
END
Vedere anche
Versione di rimozione x64 3 (sperimentale)
. PUSHFRAME
. BEGINEPILOG
. ENDEPILOG
Grammatica BNF MASM