x64 汇编函数(call/return 对比 push/pop/jump)

x64 assembly functions (call/return vs push/pop/jump)

使用内置调用和 return 指令与手动压入和弹出堆栈以及使用函数跳转有什么区别?

从功能上讲,如果你做对了,什么都没有。 然而,使用 push/pop 需要更多指令 and/or 寄存器来模拟 call/ret。当然,如果你真的想把它发挥到极致,你也可以使用 leamov 来模拟 push/pop :)

此外,当前的处理器有专门的硬件来处理用于分支预测目的的函数调用,这可能不适用于您的备用序列,因此您会受到性能损失。