Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Génère une entrée de code WOD_ALLOC_SMALL, WOD_ALLOC_LARGE ou WOD_ALLOC_HUGE de déroulement avec la taille spécifiée pour le décalage actuel dans l’épilogue.
Syntax
. Taille FREESTACK
Paramètres
taille
Nombre d’octets à libérer de la pile. Doit être un multiple de 8.
Remarques
Important
Cette directive est expérimentale et peut être modifiée.
Activez Le déroulement de la version 3 à l’aide ml64.exe /unwindv3de .
- Vous pouvez utiliser . FREESTACK uniquement dans Unwind Version 3. C’est l’épilogue équivalent à . ALLOCSTACK.
- Vous pouvez utiliser . FREESTACK uniquement dans une région épilogue, entre . BEGINEPILOG et . ENDEPILOG.
- Dans Unwind Version 3, . FREESTACK doit apparaître avant l’instruction
add rsp, Nqui implémente la désallocation de pile. - Pour garantir l’accord, incluez à la fois les directives de déroulement et le code qu’ils sont destinés à décompresser dans une macro.
- Ces directives génèrent des métadonnées de déroulement (
.xdataet.pdatades sections) mais ne produisent pas de code exécutable. - Microsoft Assembleur (MASM) choisit l’encodage le plus efficace pour une taille donnée.
MASM émet l’un des trois codes de déroulement en fonction de la taille :
| Code de déroulement | Pathologie |
|---|---|
WOD_ALLOC_SMALL |
taille ≤ 128 octets |
WOD_ALLOC_LARGE |
taille ≤ 32 Ko |
WOD_ALLOC_HUGE |
Taille> 32 Ko |
Dans Unwind Version 3, les directives d’épilogue sont obligatoires pour la génération de code de déroulement d’épilogue. L’assembleur n’émet pas de codes de déroulement d’épilogue sans .BEGINEPILOG/.ENDEPILOG paire.
Note
Dans Unwind Version 1, la directive apparaît après l’instruction correspondante. Dans Unwind Version 3, la directive apparaît avant l’instruction.
Exemple de déroulement3
; 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
Voir aussi
x64 Unwind Version 3 (expérimentale)
Informations de référence sur les directives
. ALLOCSTACK
. BEGINEPILOG
Grammaire MASM BNF