. POP2REG

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

Sintaxis

. POP2REGregister1, register2

Parámetros

register1
Primer registro que se va a mostrar. Debe ser un registro de 64 bits de uso general.

register2
Segundo registro que se va a mostrar. Debe ser un registro de 64 bits de uso general.

register1 y register2 pueden 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.

Observaciones

Importante

Esta directiva es experimental y está sujeta a cambios. Habilite Desenredado versión 3 con ml64.exe /unwindv3.

  • . POP2REG solo es válido en Desenredado versión 3. Es el homólogo del epílogo de . PUSH2REG.
  • . POP2REG 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, . POP2REG deben aparecer antes de que la instrucción que implemente realmente la acción que se desenlace.
  • En Desenredado versión 3, las directivas de epílogo son obligatorias para la generación de código de desenredado de epílogo. No se emiten códigos de desenredado de epílogo sin un .BEGINEPILOG/.ENDEPILOG par.
  • Para garantizar el acuerdo, encapsula las directivas de desenredado y el código que están diseñados para desenredar en una macro.

Si register1 y register2 son consecutivos y en orden creciente, MASM emite un WOD_PUSH_CONSECUTIVE_2 código de desenredado. De lo contrario, MASM emite un WOD_PUSH2 código de desenredado.

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 .

Example

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .push2reg rbx, rsi
   push2 rbx, rsi
   .push2reg r10, r11
   push2 r10, r11
.endprolog
   ; rest of function ...
   .beginepilog
   .pop2reg r10, r11
   pop2 r10, r11
   .pop2reg rbx, rsi
   pop2 rbx, rsi
   .endepilog
   ret
Example1 ENDP
_text ENDS
END

Consulte también

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