Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
是否mov 0x10(%esp),%esi需要比mov (%ebx),%esi现代 CPU 更多的时间来完成?
mov 0x10(%esp),%esi
mov (%ebx),%esi
根据 Intel 的优化手册表 2-8,在 Sandy Bridge 上,仅基址寄存器或基址加偏移量小于 2048 的加载延迟为 4 个周期,而基址加索引加偏移量或基址加偏移量为2048 或更大是 5 个周期。因此,在您的示例中,这两条指令应该花费相同的时间。如果您使用 2048 或更大的偏移量,则需要更长的时间。
当然,如果内存不在您的 L1 缓存中,这并不重要,因为内存访问的成本将使其他一切的成本相形见绌。