我已经编写并交叉编译了一个小的C++程序,可以在ARM或PC上运行。由于ARM和PC具有不同的指令集架构,我想进行比较。我能否获得该C++程序在两种ISA中执行的指令数?
我已经编写并交叉编译了一个小的C++程序,可以在ARM或PC上运行。由于ARM和PC具有不同的指令集架构,我想进行比较。我能否获得该C++程序在两种ISA中执行的指令数?
perf stat ./your binary
查找指令指标。此方法使用CPU性能监视单元中的寄存器 - PMU - 计算指令数量。
您想获取静态指令或动态指令的数量吗?例如,如果您有以下循环(伪代码):
for (i 0 to N):
a[i] = b[i] + c[i]
objdump -dw mybinary | wc -l
Linux操作系统:
valgrind --tool=callgrind ./program 1 > /dev/null
objdump
)或类似size
的程序。答案取决于编译器、编译器版本、命令行参数、输出格式等因素。 - artless noise