. UNSETFRAME

Genereert een WOD_SET_FPREG afwikkelcodevermelding voor het opgegeven register en offset met behulp van de huidige offset in de epiloog.

Syntax

.UNSETFRAME reg, 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