Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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, Ninstrucció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 (
.xdatay.pdatasecciones), 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