mov 0x10(%esp),%esi
在现代CPU上花费的时间是否比mov (%ebx),%esi
更长?
答案 0 :(得分:5)
根据英特尔优化手册表2-8,在Sandy Bridge上,仅基准寄存器或基准的负载延迟加上小于2048的偏移是4个周期,而基数加索引加上偏移或基数加2048或更大的偏移量是5个周期。因此,在您的示例中,两条指令应该花费相同的时间。如果您使用的偏移量为2048或更高,则需要更长时间。
当然,如果内存不在你的L1缓存中,这并不重要,因为内存访问的成本会使其他所有内容的成本相形见绌。