gpt4 book ai didi

assembly - "enter"vs "push ebp; mov ebp, esp; sub esp, imm"和 "leave"vs "mov esp, ebp; pop ebp"

转载 作者:行者123 更新时间:2023-12-03 02:54:59 30 4
gpt4 key购买 nike

回车

有什么区别
push ebp
mov ebp, esp
sub esp, imm

说明?有性能差异吗?如果是这样,哪个更快,为什么编译器总是使用后者?

离开

类似
mov  esp, ebp
pop ebp

说明。

最佳答案

存在性能差异,尤其是对于enter。在现代处理器上,这会解码为大约 10 到 20 µops,而三个指令序列约为 4 到 6 个,具体取决于架构。详情咨询Agner Fog's指令表。

此外,与三个指令序列的 3 个时钟依赖链相比,enter 指令通常具有相当高的延迟,例如 core2 上的 8 个时钟。

此外,编译器可以出于调度目的而展开这三个指令序列,当然这取决于周围的代码,以允许更多的指令并行执行。

关于assembly - "enter"vs "push ebp; mov ebp, esp; sub esp, imm"和 "leave"vs "mov esp, ebp; pop ebp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5959890/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com