为什么没有伴侣指示离开?

时间:2013-07-05 06:13:53

标签: assembly x86 cdecl

很快,为什么没有伴随指令离开x86?那样,

pushl   %ebp
movl    %esp,%ebp
pushl   $3
leave
ret

可能会成为:

enter #or something
pushl   $3
leave
ret

一般来说这不是更快吗?

3 个答案:

答案 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