. FREESTACK

Genera una entrada de código de desenredado WOD_ALLOC_SMALL, WOD_ALLOC_LARGE o WOD_ALLOC_HUGE con el tamaño especificado para el desplazamiento actual en el epílogo.

Syntax

. Tamaño FREESTACK

Parámetros

tamaño
Número de bytes que se van a desasignar de la pila. Debe ser un múltiplo de 8.

Observaciones

Importante

Esta directiva es experimental y está sujeta a cambios. Habilite Desenredado versión 3 mediante ml64.exe /unwindv3.

  • Puede usar . FREESTACK solo en Desenredado versión 3. Es el homólogo del epílogo de . ALLOCSTACK.
  • Puede usar . FREESTACK solo dentro de una región de epílogo, entre . BEGINEPILOG y . ENDEPILOG.
  • En Desenredar versión 3, . FREESTACK debe aparecer antes de la add rsp, N instrucción que implementa la desasignación de la pila.
  • Para garantizar el acuerdo, encapsula las directivas de desenredado y el código que están diseñados para desenredar en una macro.
  • Estas directivas generan metadatos de desenredado (.xdata y .pdata secciones), pero no generan código ejecutable.
  • Microsoft Ensamblador (MASM) elige la codificación más eficaz para un tamaño determinado.

MASM emite uno de los tres códigos de desenredado en función del tamaño:

Código de desenredado Condition
WOD_ALLOC_SMALL tamaño ≤ 128 bytes
WOD_ALLOC_LARGE tamaño ≤ 32 KB
WOD_ALLOC_HUGE tamaño> 32 KB

En Desenredado versión 3, las directivas de epílogo son obligatorias para la generación de código de desenredado de epílogo. El ensamblador no emite códigos de desenredado de epílogo sin un .BEGINEPILOG/.ENDEPILOG par.

Note

En Desenredar versión 1, la directiva aparece después de la instrucción correspondiente. En Desenredar versión 3, la directiva aparece antes de la instrucción .

Ejemplo de desenredado3

; 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 también

x64 Desenredado versión 3 (experimental)
Referencia de directivas
. ALLOCSTACK
. BEGINEPILOG
Gramática BNF de MASM