. FREESTACK

Genera una voce di codice di rimozione WOD_ALLOC_SMALL, WOD_ALLOC_LARGE o WOD_ALLOC_HUGE con le dimensioni specificate per l'offset corrente nell'epilogo.

Sintassi

. Dimensioni FREESTACK

Parametri

size
Numero di byte da deallocare dallo stack. Deve essere un multiplo di 8.

Osservazioni:

Importante

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

  • È possibile usare . FREESTACK solo nella versione di rimozione 3. È l'epilogo controparte di . ALLOCSTACK.
  • È possibile usare . FREESTACK solo all'interno di un'area epilogo, tra . BEGINEPILOG e . ENDEPILOG.
  • In Rimozione versione 3, . FREESTACK deve essere visualizzato prima dell'istruzione add rsp, N che implementa la deallocazione dello stack.
  • Per garantire il contratto, eseguire il wrapping di entrambe le direttive di rimozione e il codice da rimuovere in una macro.
  • Queste direttive generano metadati di rimozione (.xdata e .pdata sezioni) ma non producono codice eseguibile.
  • Microsoft Assembler (MASM) sceglie la codifica più efficiente per una determinata dimensione.

MASM genera uno dei tre codici di rimozione a seconda delle dimensioni:

Codice di rimozione Condition
WOD_ALLOC_SMALL dimensioni ≤ 128 byte
WOD_ALLOC_LARGE dimensioni ≤ 32 KB
WOD_ALLOC_HUGE Dimensione> 32 KB

In Rimozione versione 3, le direttive dell'epilogo sono obbligatorie per la generazione del codice di rimozione dell'epilogo. L'assembler non emette codici di rimozione dell'epilogo 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 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .allocstack 16
   sub rsp, 16
.endprolog
   ; function body
   .beginepilog
   .freestack 16
   add rsp, 16
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Vedere anche

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