. POPREG

Genera una WOD_PUSH entrada de código de desenredado para el registro especificado mediante el desplazamiento actual en el epílogo.

Syntax

. Registro POPREG

Parámetros

registrar
Registro que se va a mostrar. Debe ser un registro de 64 bits de uso general.

Observaciones

Importante

Esta directiva es experimental y está sujeta a cambios. Habilite Desenredar versión 3 mediante la /unwindv3 opción de ml64.exe.

.POPREG solo es válido en Desenredado versión 3. Es el homólogo del epílogo de . PUSHREG.

.POPREG solo se permite dentro de una región de epílogo, entre . BEGINEPILOG y . ENDEPILOG. Estas directivas generan metadatos de desenredado (.xdata y .pdata secciones), pero no generan código ejecutable. En Desenredar versión 3, .POPREG debe aparecer antes de la pop instrucción que implementa la restauración del registro. Para garantizar el acuerdo, encapsula las directivas de desenredado y el código que están diseñados para desenredar en una macro.

register puede ser uno de los siguientes:
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

En Desenredado versión 3, las directivas de epílogo son obligatorias para la generación de código de desenredado de epílogo. El ensamblador no emite códigos de desenredado de epílogo sin un .BEGINEPILOG/.ENDEPILOG par.

Note

En Desenredar versión 1, la directiva aparece después de la instrucción correspondiente. En Desenredar versión 3, la directiva aparece antes de la instrucción .

Ejemplo de desenredado3

; 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

Consulte también

x64 Desenredado versión 3 (experimental)
Referencia de directivas
. PUSHREG
. POP2REG
. BEGINEPILOG
Gramática BNF de MASM