.PUSHREG
使用序言中的当前偏移为指定寄存器编号生成 UWOP_PUSH_NONVOL
展开代码条目。
语法
.PUSHREG register
备注
.SETFRAME 允许 ml64.exe 用户指定帧函数的展开方式,并且仅允许在序言中展开,该序表从 PROCFRAME 声明扩展到 .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
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈