. POPFRAME

Genereert een WOD_PUSH_CANONICAL_FRAME Windows afwikkelen van gegevens (WOD) om codevermelding in de epiloog af te wikkelen.

Syntax

. POPFRAMECODEwaarde | ⟧

Parameters

waarde
Een optionele numerieke wijziging in het bereik 0-255.
Wederzijds exclusief met CODE. Als u het optionele trefwoord CODE opgeeft, ontvangt de codevermelding voor afwikkelen een wijziging van 1.
Als u in plaats daarvan een optionele numerieke waarde opgeeft, ontvangt deze de opgegeven waarde.
Als u geen argument doorgeeft, is de waarde 0.

Opmerkingen

Important

Deze richtlijn is experimenteel en kan worden gewijzigd. Schakel versie 3 van de rust in met ml64.exe /unwindv3.

De . Met POPFRAME-instructie kunnen ml64.exe gebruikers opgeven hoe een framefunctie in een epilog tot rust komt. U kunt deze alleen gebruiken binnen een epiloggebied, tussen . BEGINEPILOG en . ENDEPILOG.

  • . POPFRAME is alleen geldig in afwikkelversie 3. Het is de epilog tegenhanger van . PUSHFRAME. De operandwaarde moet overeenkomen met de bijbehorende . PUSHFRAME in de proloog.
  • In Relax versie 3, . POPFRAME moet worden weergegeven voordat de instructie waarmee de actie wordt geïmplementeerd, wordt uitgevoerd. Om de overeenkomst te garanderen, verpakt u zowel de richtlijnen voor afwikkelen als de code die ze zijn bedoeld om in een macro tot rust te komen.
  • 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.
  • Deze instructies genereren een ontspannen metagegevens (.xdata en .pdata secties), maar produceren geen uitvoerbare code.

Note

In Relax versie 1 worden de instructies weergegeven na de bijbehorende instructie. In Relax versie 3 worden instructies weergegeven vóór de instructie.

Voorbeeld voor relaxv3

In het volgende voorbeeld ziet u hoe u deze kunt gebruiken. POPFRAME in een epiloog om een interrupthandler aan te geven die een canonieke machineframe pusht en popt.

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushframe
   .pushreg rbx
   push rbx
   .allocstack 32
   sub rsp, 32
.endprolog
   ; interrupt handler body ...
   .beginepilog
   .freestack 32
   add rsp, 32
   .popreg rbx
   pop rbx
   .popframe
   .endepilog
   iretq
Example1 ENDP
_text ENDS
END

Zie ook

x64 Versie 3 tot rust laten komen (experimenteel)
. PUSHFRAME
. BEGINEPILOG
. ENDEPILOG
MASM BNF-grammatica