很快,为什么没有伴随指令离开x86?那样,
pushl %ebp
movl %esp,%ebp
pushl $3
leave
ret
可能会成为:
enter #or something
pushl $3
leave
ret
一般来说这不是更快吗?
答案 0 :(得分:3)
事实上, 是enter
instruction。至于为什么没有多大用处,"Intel® 64 and IA-32 Architectures Optimization Reference Manual"提供了一个提示:
汇编/编译器编码规则32.(MH影响,M一般性)使用
push
/pop
来管理函数调用/返回之间的堆栈空间和地址调整,而不是enter
/ { {1}}。除了错误预测之外,使用leave
指令与非零immediates可能会在管道中遇到严重延迟。
答案 1 :(得分:3)
确实存在匹配的ENTER(汇编语言艺术)指令。然而,它很少使用,因为它非常慢,如链接中所述。
答案 2 :(得分:1)
对于某些处理器,有enter
。