. POPFRAME

Genera una voce di codice di rimozione WOD_PUSH_CANONICAL_FRAME Windows (WOD) nell'epilogo.

Sintassi

. POPFRAMEvalore 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/.ENDEPILOG coppia.
  • Queste direttive generano metadati di rimozione (.xdata e .pdata sezioni) 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