. FREESTACK

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, N qui 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 (.xdata et .pdata des 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