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.
Genereert een WOD_SET_FPREG afwikkelcodevermelding voor het opgegeven register en offset met behulp van de huidige offset in de epiloog.
Syntax
.UNSETFRAMEreg, offset
Parameters
reg
De framepointer registreert om het begin op te heffen.
afstand
De verschuiving in het stapelframe waar de framepointer tot stand is gebracht.
Opmerkingen
Important
Deze richtlijn is experimenteel en kan worden gewijzigd. Schakel versie 3 van de rust in met ml64.exe /unwindv3.
.UNSETFRAME is alleen geldig in afwikkelversie 3. Het is de epiloog-tegenhanger voor . SETFRAME.
.UNSETFRAME is alleen toegestaan binnen een epilooggebied, tussen . BEGINEPILOG en . ENDEPILOG. Deze instructies genereren een ontspannen metagegevens (.xdata en .pdata secties), maar produceren geen uitvoerbare code.
In Relax versie 3 .UNSETFRAME moet worden weergegeven vóór de instructie waarmee de stackpointer uit het framepointerregister wordt hersteld.
Het is een goede gewoonte om 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.
In Relax versie 3 zijn epiloogrichtlijnen verplicht voor het afwikkelen van codegeneratie van epiloog. Er worden geen epiloog-afwikkelcodes verzonden zonder .BEGINEPILOG/.ENDEPILOG een paar.
Note
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 /unwindv3 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
.pushreg rbp
push rbp
.allocstack 010h
sub rsp, 010h
.setframe rbp, 0
mov rbp, rsp
.endprolog
; modify the stack pointer outside of the prologue (similar to alloca)
sub rsp, 060h
; we can unwind from the following AV because of the frame pointer
mov rax, 0
mov rax, [rax] ; AV!
add rsp, 060h
.beginepilog
.unsetframe rbp, 0
mov rsp, rbp
.freestack 010h
add rsp, 010h
.popreg rbp
pop rbp
.endepilog
ret
frmex2 ENDP
_text ENDS
END
Zie ook
x64 Versie 3 tot rust laten komen (experimenteel)
Naslaginformatie over richtlijnen
. SETFRAME
. BEGINEPILOG
MASM BNF-grammatica