x64 汇编函数(call/return 对比 push/pop/jump)
x64 assembly functions (call/return vs push/pop/jump)
使用内置调用和 return 指令与手动压入和弹出堆栈以及使用函数跳转有什么区别?
从功能上讲,如果你做对了,什么都没有。
然而,使用 push
/pop
需要更多指令 and/or 寄存器来模拟 call
/ret
。当然,如果你真的想把它发挥到极致,你也可以使用 lea
和 mov
来模拟 push
/pop
:)
此外,当前的处理器有专门的硬件来处理用于分支预测目的的函数调用,这可能不适用于您的备用序列,因此您会受到性能损失。
使用内置调用和 return 指令与手动压入和弹出堆栈以及使用函数跳转有什么区别?
从功能上讲,如果你做对了,什么都没有。
然而,使用 push
/pop
需要更多指令 and/or 寄存器来模拟 call
/ret
。当然,如果你真的想把它发挥到极致,你也可以使用 lea
和 mov
来模拟 push
/pop
:)
此外,当前的处理器有专门的硬件来处理用于分支预测目的的函数调用,这可能不适用于您的备用序列,因此您会受到性能损失。