Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.ALLOCSTACK genereert een UWOP_ALLOC_SMALL of een UWOP_ALLOC_LARGE met de opgegeven grootte voor de huidige verschuiving in de proloog.
Syntaxis
.ALLOCSTACKGrootte
Opmerkingen
Microsoft Assemblyer (MASM) kiest de meest efficiënte codering voor een bepaalde grootte.
.ALLOCSTACK stelt gebruikers in staat ml64.exe op te geven hoe een framefunctie tot rust komt en is alleen toegestaan in de proloog, die zich uitbreidt van de PROC-verklaringFRAME tot de . ENDPROLOG-richtlijn .
- Deze instructies genereren een ontspannen metagegevens (
.xdataen.pdatasecties), maar produceren geen uitvoerbare code. - Ga vooraf aan
.ALLOCSTACKde instructies waarmee de acties daadwerkelijk worden geïmplementeerd. Verpakken zowel de richtlijnen voor afwikkelen als de code die ze zijn bedoeld om in een macro tot rust te komen om ervoor te zorgen dat ze akkoord gaan.
De grootteoperand moet een veelvoud van 8 zijn.
De epiloog tegenhanger is . FREESTACK.
Voorbeeld: geef een afwikkelingsversie 3 op/ uitzonderingshandler
In het volgende voorbeeld ziet u hoe u een handler voor ontspannen/uitzonderingen kunt opgeven:
; 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
Gedrag van versie 3 tot rust laten komen
Important
Ondersteuning voor versie 3 is experimenteel en kan worden gewijzigd. Schakel het in met behulp van ml64.exe /unwindv3.
.ALLOCSTACK genereert een WOD_ALLOC_SMALL, WOD_ALLOC_LARGEof WOD_ALLOC_HUGE afwikkelen versie 3 codevermelding met de opgegeven grootte voor de huidige offset in de prolog.
.ALLOCSTACK moet worden weergegeven voordat de sub rsp, N instructie wordt beschreven. Deze vereiste is het tegenovergestelde van versie 1, waarbij de richtlijn de instructie volgt.
MASM verzendt een van de drie afwikkelcodes, afhankelijk van de toewijzingsgrootte:
| Code tot rust laten komen | Conditie |
|---|---|
WOD_ALLOC_SMALL |
grootte ≤ 128 bytes |
WOD_ALLOC_LARGE |
grootte ≤ 32 kB |
WOD_ALLOC_HUGE |
Grootte> 32 KB |
Versie 1 genereert alleen UWOP_ALLOC_SMALL of UWOP_ALLOC_LARGE. Versie 3 voegt een derde variant toe, WOD_ALLOC_HUGEvoor toewijzingen die groter zijn dan 32 kB.
Opmerking
In Relax versie 1 wordt de instructie weergegeven na de bijbehorende instructie. In Relax versie 3 wordt de instructie weergegeven vóór de instructie.
Voorbeeld voor relaxv3
; 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
Zie ook
x64 Versie 3 tot rust laten komen (experimenteel)
Naslaginformatie over richtlijnen
MASM BNF-grammatica
MASM voor x64 (ml64.exe)