Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Gera uma entrada de código de WOD_ALLOC_SMALL, WOD_ALLOC_LARGE ou WOD_ALLOC_HUGE de desenrolar com o tamanho especificado para o deslocamento atual no epílogo.
Sintaxe
. Tamanho do FREESTACK
Parâmetros
tamanho
O número de bytes a desalocar da pilha. Deve ser um múltiplo de 8.
Remarks
Importante
Esta diretiva é experimental e está sujeita a alterações.
Ative o Unwind Versão 3 usando ml64.exe /unwindv3.
- Podes usar . FREESTACK apenas no Unwind Versão 3. É o equivalente no epílogo de . ALLOCSTACK.
- Podes usar . FREESTACK apenas dentro de uma região de epílogo, entre . BEGINEPILOG e . FIM EPÍLOGO.
- Em Unwind Versão 3, . O FREESTACK deve aparecer antes da
add rsp, Ninstrução que implementa a deslocação da pilha. - Para garantir o acordo, envolve tanto as diretivas de desmantelamento como o código que devem desfazer numa macro.
- Estas diretivas geram metadados de desmantelamento (
.xdatae.pdatasecções), mas não produzem código executável. - O Microsoft Assembler (MASM) escolhe a codificação mais eficiente para um determinado tamanho.
O MASM emite um de três códigos de desmantelamento, dependendo do tamanho:
| Código de desmontagem | Condition |
|---|---|
WOD_ALLOC_SMALL |
Tamanho ≤ 128 bytes |
WOD_ALLOC_LARGE |
Tamanho ≤ 32 KB |
WOD_ALLOC_HUGE |
Tamanho> 32 KB |
Na Versão 3 do Unwind, as diretivas de epílogo são obrigatórias para a geração do código de desmantelamento do epílogo. O assembler não emite códigos de desmantelamento do epílogo sem um .BEGINEPILOG/.ENDEPILOG par.
Note
No Unwind Versão 1, a diretiva aparece após a instrução correspondente. Na Versão 3 de Desenrolar, a diretiva aparece antes da instrução.
Exemplo para unwindv3
; 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
Ver também
x64 Unwind Versão 3 (experimental)
Referência de Diretivas
. ALLOCSTACK
. BEGINEPILOG
MASM BNF Gramática