Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.ALLOCSTACK genererar en UWOP_ALLOC_SMALL eller en UWOP_ALLOC_LARGE med den angivna storleken för den aktuella förskjutningen i prologen.
Syntax
.ALLOCSTACKStorlek
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 (
.xdataoch.pdataavsnitt) men producerar inte körbar kod. -
.ALLOCSTACKFö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)