.PUSHREG
使用序言中的当前偏移为指定寄存器编号生成 UWOP_PUSH_NONVOL
展开代码条目。
语法
.PUSHREG register
注解
.PUSHREG 允许用户ml64.exe指定帧函数展开的方式,并且仅允许在序幕中展开,该序言从 PROC FRAME 声明扩展到 PROC FRAME 声明。ENDPROLOG 指令。 这些指令不生成代码;它们仅生成 .xdata
和 .pdata
。 .PUSHREG 前面应有实际实现要撤消的操作的说明。 最好将展开指令和代码包装在宏中,以确保一致。
寄存器可以是以下项之一:
RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15。
有关详细信息,请参阅 MASM for x64 (ml64.exe)。
示例
说明
以下示例演示如何推送非易失性寄存器。
代码
; 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