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_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, Nche 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 (
.xdatae.pdatasezioni) 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