【发布时间】:2015-04-16 22:39:50
【问题描述】:
使用内置调用和返回指令与手动压栈和出栈以及使用函数跳转有什么区别?
【问题讨论】:
标签: function assembly 64-bit x86-64
使用内置调用和返回指令与手动压栈和出栈以及使用函数跳转有什么区别?
【问题讨论】:
标签: function assembly 64-bit x86-64
从功能上讲,如果你做对了,什么都没有。
然而,使用push/pop 模拟call/ret 需要更多指令和/或寄存器。当然如果你真的想把它发挥到极致,你也可以模仿push/pop使用lea和mov:)
此外,当前的处理器具有专门的硬件来处理用于分支预测的函数调用,这可能不适用于您的备用序列,因此您会受到性能损失。
【讨论】: