1

为什么在 x86 上没有附带说明?那样,

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

可能变成:

enter #or something
pushl   $3
popl    %eax
leave
ret

一般来说,这不是更快吗?

4

3 回答 3

5

事实上,一个enter指令。至于为什么它没有得到太多使用,“英特尔® 64 和 IA-32 架构优化参考手册”提供了一个提示:

汇编/编译器编码规则 32。(MH 影响,M 通用性)使用push/pop来管理堆栈空间和函数调用/返回之间的地址调整,而不是enter/ leave。除了错误预测之外,使用enter具有非零立即数的指令可能会在流水线中遇到明显的延迟。

于 2013-07-05T06:20:31.163 回答
4

确实有一个匹配的ENTER(汇编语言艺术)指令。但是,它很少使用,因为它非常慢,如链接中所述。

于 2013-07-05T06:20:57.403 回答
1

enter对于某些处理器,有, 。

于 2013-07-05T06:20:12.043 回答