. POPREG

Génère une WOD_PUSH entrée de code de déroulement pour le registre spécifié à l’aide du décalage actuel dans l’épilogue.

Syntaxe

. Registre POPREG

Paramètres

Registre
Registre à afficher. Doit être un registre 64 bits universel.

Remarques

Important

Cette directive est expérimentale et peut être modifiée. Activez Le déroulement de la version 3 à l’aide de l’option /unwindv3 dans ml64.exe.

.POPREG est valide uniquement dans Unwind Version 3. C’est l’épilogue équivalent à . PUSHREG.

.POPREG est autorisé uniquement dans une région épilogue, entre . BEGINEPILOG et . ENDEPILOG. Ces directives génèrent des métadonnées de déroulement (.xdata et .pdata des sections) mais ne produisent pas de code exécutable. Dans Unwind Version 3, .POPREG doit apparaître avant l’instruction pop qui implémente la restauration du registre. 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.

le registre peut être l’un des suivants :
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31

Dans Unwind Version 3, les directives d’épilogue sont obligatoires pour la génération de code de déroulement d’épilogue. L’assembleur n’émet pas de codes de déroulement d’épilogue sans .BEGINEPILOG/.ENDEPILOG paire.

Note

Dans Unwind Version 1, la directive apparaît après l’instruction correspondante. Dans Unwind Version 3, la directive apparaît avant l’instruction.

Exemple de déroulement3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushreg rbx
   push rbx
   .pushreg rsi
   push rsi
.endprolog
   ; rest of function ...
   .beginepilog
   .popreg rsi
   pop rsi
   .popreg rbx
   pop rbx
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Voir aussi

x64 Unwind Version 3 (expérimentale)
Informations de référence sur les directives
. PUSHREG
. POP2REG
. BEGINEPILOG
Grammaire MASM BNF