. ALLOCSTACK

.ALLOCSTACK genererar en UWOP_ALLOC_SMALL eller en UWOP_ALLOC_LARGE med den angivna storleken för den aktuella förskjutningen i prologen.

Syntax

.ALLOCSTACK Storlek

Anmärkningar

Microsoft Assembler (MASM) väljer den mest effektiva kodningen för en viss storlek.

.ALLOCSTACK tillåter ml64.exe användare att ange hur en ramfunktion avaktiveras och endast tillåts i prologen, som sträcker sig från PROC-deklarationenFRAME till . ENDPROLOG-direktivet .

  • Dessa direktiv genererar varva ned metadata (.xdata och .pdata avsnitt) men producerar inte körbar kod.
  • .ALLOCSTACK Föregå med de instruktioner som faktiskt implementerar de åtgärder som ska ångras. Omslut både avaktiveringsdirektiven och koden som de är avsedda att varva ned i ett makro för att säkerställa en överenskommelse.

Storleksoperand måste vara en multipel av 8.

Motsvarigheten till epilogen är . FREESTACK.

Exempel: Ange en avspolningshanterare för version 3

Följande exempel visar hur du anger en hanterare för varva ned/undantag:

; ml64 ex3.asm /link /entry:Example3 /SUBSYSTEM:Console
text SEGMENT
PUBLIC Example3
PUBLIC Example3_UW
Example3_UW PROC
   ; exception/unwind handler body

   ret 0

Example3_UW ENDP

Example3 PROC FRAME : Example3_UW

   sub rsp, 16
.allocstack 16

.endprolog

   ; function body
    add rsp, 16
   ret 0

Example3 ENDP
text ENDS
END

Varva ned version 3-beteende

Important

Stöd för att varva ned version 3 är experimentellt och kan komma att ändras. Aktivera det med hjälp ml64.exe /unwindv3av .

.ALLOCSTACK genererar en WOD_ALLOC_SMALLkodpost i , WOD_ALLOC_LARGEeller WOD_ALLOC_HUGE Varva ned version 3 med den angivna storleken för den aktuella förskjutningen i prologen.

.ALLOCSTACK måste visas före instruktionen som sub rsp, N beskrivs. Detta krav är motsatsen till version 1, där direktivet följer instruktionen.

MASM genererar en av tre varva ned-koder beroende på allokeringsstorleken:

Varva ned kod Tillstånd
WOD_ALLOC_SMALL storlek ≤ 128 byte
WOD_ALLOC_LARGE storlek ≤ 32 KB
WOD_ALLOC_HUGE Storlek> 32 KB

Version 1 genererar endast UWOP_ALLOC_SMALL eller UWOP_ALLOC_LARGE. Version 3 lägger till en tredje variant, WOD_ALLOC_HUGE, för allokeringar som är större än 32 KB.

Note

I Varva ned version 1 visas direktivet efter motsvarande instruktion. I Varva ned version 3 visas direktivet före instruktionen.

Exempel på avspolning 3

; ml64 ex3.asm /unwindv3 /link /entry:Example3 /SUBSYSTEM:Console
text SEGMENT
PUBLIC Example3
PUBLIC Example3_UW
Example3_UW PROC
   ; exception/unwind handler body

   ret 0

Example3_UW ENDP

Example3 PROC FRAME : Example3_UW

.allocstack 16
   sub rsp, 16

.endprolog

   ; function body
    add rsp, 16
   ret 0

Example3 ENDP
text ENDS
END

Se även

x64 Varva ned version 3 (experimentell)
Referens för direktiv
MASM BNF-grammatik
MASM för x64 (ml64.exe)