C ++或ANSI C的周期数?

时间:2010-11-02 23:57:49

标签: c++ c assembly processor

网络上是否有任何地方可以让我了解处理器(Core i7和Core 2)周期中各种编程语言语法的含义?在大学时,我学习了ARM汇编语言,我们可以映射执行减法运算符所需的周期数。我只是想知道是否可以在Core i7或Core 2上使用更高级别的语言进行此操作?

3 个答案:

答案 0 :(得分:8)

没有。这完全取决于您使用的编译器,以及您使用的优化设置等。

您可以使用自己喜欢的编译器和设置来生成汇编代码,并从汇编代码中进行这些预测。

但是,请记住,在现代架构中,内存延迟和寄存器重命名等因素对速度有很大影响,即使检查汇编代码,这些影响也不明显。

答案 1 :(得分:2)

通常,在高级语言中,单个语句不能完全映射到特定的机器代码指令序列。编译器通常会优化事物,这将涉及指令的各种变换,安排甚至消除。因此,引用像“for表达式需要20个周期”这样的指标通常没有意义。

答案 2 :(得分:2)

您必须手动将更高级别的指令映射到装配说明中,或查看装配清单。然后看这里

http://gmplib.org/~tege/x86-timing.pdf

或在这里

http://www.intel.com/Assets/PDF/manual/248966.pdf