是否有可用于对某些objdump --disassemble
输出进行后处理以使用周期计数进行注释的脚本?特别是对于 ARM 家族。 大多数情况下,这只是与计数的表查找的模式匹配。我想 Perl、python、bash+5M
可能需要像五个内存周期这样的注释。C
等都很好。我认为这通常可以完成,但我对具有正交指令集的ARM感兴趣。这是68HC11上做同样事情的线程。该脚本需要一个 CPU模型选项来选择适当的循环计数;我认为这些计数已经存在于机器描述中。gcc
我不认为有一个objdump
开关,但 RTFM 会很棒。
编辑:为了澄清,假设从缓存中执行代码时的最佳情况内存子系统是可以的。目标不是根据某些正在运行的机器进行 100% 准确的循环计数。有可能得到一个合理的估计,否则编译器设计是不可能的。
正如DWelch指出的那样,使用深度流水线架构(例如最近的 Cortex 芯片)无法实现简单的运行总计。objdump
后处理必须查看周围的操作码。gcc 插件更有可能实现这一点,因为那是新的(4.5+),我不认为这样的事情存在。ARM926 的脚本当然是可能的,而且相当简单。
内存延迟无关紧要。内存控制器就像另一个CPU
。它在 CPU 做算术等时做它的业务。一个好的/调整好的算法将使内存访问与计算并行。通过计算加载/存储和周期,您可以确定当您使用计时器主动分析时完成了多少并行度。由于寄存器之间的互锁,流水线很重要,但即使在现代 ARM 处理器上也可以可靠地计算和使用基本块的周期计数;这对于一个简单的脚本来说太复杂了。