标签: function assembly 64-bit x86-64
使用内置调用和返回指令与手动推送和弹出堆栈以及使用跳转功能之间的区别是什么?
答案 0 :(得分:2)
从功能上讲,如果你做得对,没什么。 但是,使用call / ret模拟push / pop需要更多指令和/或注册。当然,如果你真的想把它发挥到极致,你也可以使用push和pop模仿lea / mov:)
call
ret
push
pop
lea
mov
此外,当前处理器具有专门的硬件来处理函数调用以进行分支预测,这可能不会对您的备用序列起作用,因此您将受到性能损失。