.PUSHFRAME

Genera una entrada de código de desenredado UWOP_PUSH_MACHFRAME. Si especifica la palabra clave CODE opcional, la entrada de código de desenredado obtiene un modificador de 1. De lo contrario, el modificador es 0.

Sintaxis

.PUSHFRAMECODE⟧ ;P rior to Unwind Version 3 .PUSHFRAMECODE⟧ | [0-255] ; Desenredado versión 3 específica

Comentarios

Use .PUSHFRAME con ml64.exe para especificar cómo se desenreda una función de marco. Solo se puede usar en el prólogo, que se extiende desde la declaración PROCFRAME a . Directiva ENDPROLOG .

  • Estas directivas generan metadatos de desenredado (.xdata y .pdata secciones), pero no generan código ejecutable.
  • Precede con .PUSHFRAME las instrucciones que implementan las acciones que se van a desenlazar.
  • Para garantizar el acuerdo, encapsula las directivas de desenredado y el código que están diseñados para desenredar en una macro.

Comportamiento de desenredado versión 3

Importante

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

En Desenredado versión 3, .PUSHFRAME emite una WOD_PUSH_CANONICAL_FRAME entrada de código de desenredado.
Al especificar la palabra clave CODE opcional, el valor del modificador de entrada de código de desenredado es 1.
Si especifica un valor opcional, la directiva la usa directamente.
Si no pasa un argumento, el valor es 0. El valor debe estar en el intervalo de 0 a 255.

Nota: En Desenredar versión 1, las directivas vienen después de la instrucción . En Desenredado versión 3, las directivas vienen antes de la instrucción . .PUSHFRAME debe aparecer antes de la instrucción que describe. Este comportamiento es el contrario de la versión 1, donde la directiva sigue la instrucción .

Ejemplo de desenredado3

; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
   .pushframe CODE
.endprolog
   ; interrupt handler body ...
   iretq
Example1 ENDP
_text ENDS
END

El homólogo de epílogo es . POPFRAME.

Consulte también

x64 Desenredado versión 3 (experimental)
Referencia de directivas
. POPFRAME
Gramática BNF de MASM
MASM para x64 (ml64.exe)