Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Génère une entrée de code de déroulement WOD_PUSH_CANONICAL_FRAME Windows (WOD) dans l’épilogue.
Syntaxe
. POPFRAME ⟦VALEURCODE | ⟧
Paramètres
valeur
Modificateur numérique facultatif dans la plage 0 à 255.
Mutuellement exclusif avec CODE. Si vous spécifiez le mot clé CODE facultatif, l’entrée de code de déroulement reçoit un modificateur de 1.
Si vous spécifiez une valeur numérique facultative à la place, elle reçoit la valeur spécifiée.
Si vous ne passez pas d’argument, la valeur est 0.
Remarques
Important
Cette directive est expérimentale et peut être modifiée. Activez Unwind Version 3 avec ml64.exe /unwindv3.
Le . La directive POPFRAME permet aux utilisateurs de ml64.exe spécifier comment une fonction frame se déroule dans un épilogue. Vous ne pouvez l’utiliser qu’au sein d’une région épilogue, entre . BEGINEPILOG et . ENDEPILOG.
- . POPFRAME est valide uniquement dans Unwind Version 3. C’est l’épilogue équivalent de . PUSHFRAME. La valeur d’opérande doit correspondre à la valeur correspondante . PUSHFRAME dans le prologue.
- Dans Unwind Version 3, . POPFRAME doit apparaître avant l’instruction qui implémente l’action à décoder. Pour garantir l’accord, incluez à la fois les directives de déroulement et le code qu’ils sont destinés à décompresser dans une macro.
- Dans Unwind Version 3, les directives d’épilogue sont obligatoires pour la génération de code de déroulement d’épilogue. Aucun code de déroulement d’épilogue n’est émis sans
.BEGINEPILOG/.ENDEPILOGpaire. - Ces directives génèrent des métadonnées de déroulement (
.xdataet.pdatades sections) mais ne produisent pas de code exécutable.
Note
Dans Unwind Version 1, les directives apparaissent après l’instruction correspondante. Dans Unwind Version 3, les directives apparaissent avant l’instruction.
Exemple de déroulement3
L’exemple suivant montre comment utiliser . POPFRAME dans un épilogue pour indiquer un gestionnaire d’interruptions qui envoie et pop une trame de machine canonique.
; 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
Voir aussi
x64 Unwind Version 3 (expérimentale)
. PUSHFRAME
. BEGINEPILOG
. ENDEPILOG
Grammaire MASM BNF