. FREESTACK

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, N instruçã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 (.xdata e .pdata seçõ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