Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Gera uma entrada de código WOD_ALLOC_SMALL, WOD_ALLOC_LARGE ou WOD_ALLOC_HUGE de desenrolamento com o tamanho especificado para o deslocamento atual no epílogo.
Syntax
. Tamanho DE FREESTACK
Parâmetros
tamanho
O número de bytes a serem desalocados da pilha. Deve ser um múltiplo de 8.
Observações
Importante
Esta diretiva é experimental e está sujeita a alterações.
Habilite o Descontrair versão 3 usando ml64.exe /unwindv3.
- Você pode usar . FREESTACK somente na versão 3 do Unwind. É o epílogo equivalente a . ALLOCSTACK.
- Você pode usar . FREESTACK somente dentro de uma região de epílogo, entre . BEGINEPILOG e . ENDEPILOG.
- Em Descontrair versão 3, . FREESTACK deve aparecer antes da
add rsp, Ninstrução que implementa a desalocação da pilha. - Para garantir o acordo, embrulhe as diretivas de desenrolamento e o código que elas devem descontrair em uma macro.
- Essas diretivas geram metadados de desenrolamento (
.xdatae.pdataseções), mas não produzem código executável. - Microsoft Assembler (MASM) escolhe a codificação mais eficiente para um determinado tamanho.
O MASM emite um dos três códigos de desenrolamento, dependendo do tamanho:
| Desenredar código | Condição |
|---|---|
WOD_ALLOC_SMALL |
tamanho ≤ 128 bytes |
WOD_ALLOC_LARGE |
tamanho ≤ 32 KB |
WOD_ALLOC_HUGE |
Tamanho> 32 KB |
No Unwind Versão 3, as diretivas de epílogo são obrigatórias para a geração de código de desenrolamento do epílogo. O assembler não emite códigos de desenrolamento de epílogo sem um .BEGINEPILOG/.ENDEPILOG par.
Note
No Descontrair versão 1, a diretiva é exibida após a instrução correspondente. No Descontrair versão 3, a diretiva é exibida antes da instrução.
Exemplo de desenrolamento3
; 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
Consulte também
x64 Descontrair versão 3 (experimental)
Referência de diretivas
. ALLOCSTACK
. BEGINEPILOG
Gramática BNF do MASM