Compartir por


.PUSHREG

Genera una entrada de código de desenredado UWOP_PUSH_NONVOL para el número de registro especificado mediante el desplazamiento actual en el prólogo.

Sintaxis

.PUSHREG registro

Comentarios

. PUSHREG permite a los usuarios de ml64.exe especificar cómo se desenreda una función de marco y solo se permite dentro del prólogo, que se extiende desde la declaración PROC FRAME a . Directiva ENDPROLOG . Estas directivas no generan código; solo generan .xdata y .pdata. .PUSHREG debe ir precedido de instrucciones que implementen realmente las acciones que se van a desenredar. Se recomienda ajustar las directivas de desenredado y el código que van a desenredar en una macro para garantizar que se cumple el contrato.

register puede ser uno de los siguientes valores:
RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15.

Para más información, consulte MASM para x64 (ml64.exe).

Ejemplo

Descripción

En el ejemplo siguiente, se muestra cómo insertar registros no volátiles.

Código

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

Consulte también

Referencia de directivas
Gramática BNF de MASM