gpt4 book ai didi

performance - x86 inc 与 add 指令的相对性能

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

快速问题,事先假设

mov eax, 0
哪个更有效率?
inc eax
inc eax
或者
add eax, 2
另外,万一两个 inc s 更快,编译器(例如 GCC)是否通常(即没有积极的优化标志)优化 var += 2要吗?
PS:不要用“不要过早优化”的变体来回答,这只是学术兴趣。

最佳答案

两个inc同一寄存器上的指令(或更一般地说,两条读-修改-写指令)确实总是具有至少两个周期的依赖链。这是假设一个 inc 的一个时钟延迟,自 486 以来就是这种情况。这意味着如果周围的指令不能与两条 inc 指令交错以隐藏这些延迟,代码将执行得更慢。

但是无论如何编译器都不会发出您建议的指令序列( mov eax,0 将被替换为 xor eax,eax ,参见 What is the purpose of XORing a register with itself? )

mov eax,0
inc eax
inc eax

它将被优化为
mov eax,2

关于performance - x86 inc 与 add 指令的相对性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993326/

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