2

是否mov 0x10(%esp),%esi需要比mov (%ebx),%esi现代 CPU 更多的时间来完成?

4

1 回答 1

5

根据 Intel 的优化手册表 2-8,在 Sandy Bridge 上,仅基址寄存器或基址加偏移量小于 2048 的加载延迟为 4 个周期,而基址加索引加偏移量或基址加偏移量为2048 或更大是 5 个周期。因此,在您的示例中,这两条指令应该花费相同的时间。如果您使用 2048 或更大的偏移量,则需要更长的时间。

当然,如果内存不在您的 L1 缓存中,这并不重要,因为内存访问的成本将使其他一切的成本相形见绌。

于 2012-09-21T12:34:42.233 回答