小编Kir*_*jah的帖子

使用pin,perf和valgrind计算二进制文件执行的指令数

我是pin工具的新手,用于动态二进制检测.我试图使用pin工具API编写一些简单的客户端程序.一个这样的简单客户端是计算二进制的执行指令的数量,该指令作为引脚的示例之一给出.
我用C写了一个非常基本的程序,

int main(){return 0;}
Run Code Online (Sandbox Code Playgroud)

并使用gcc编译器编译.当我使用pin工具来计算用于上述C程序的二进制的指令时,它给了我答案96072
当我使用valgrind做同样的任务时,它给了我97487的答案,它几乎等于前一个.但是,当我使用perf时,答案是421,256 .各种工具之间出现这种差异的原因是什么?
为了找到更多细节,我已经将C程序编译成x86程序集,它包含大约20-30行汇编指令.但是当我使用objdump来反汇编二进制文件时,它产生了200-300行汇编指令.我也无法弄清楚这种差异的原因.我使用Linux内核版本3.8.0-39运行64位Ubuntu 12.04.提前致谢.

c assembly valgrind x86-64 perf

5
推荐指数
1
解决办法
3606
查看次数

从Verilog中的测试平台访问本地模块变量

编写Verilog测试平台以验证模块是否有任何方法可以从测试平台访问该模块的本地特定变量?

verilog

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

assembly ×1

c ×1

perf ×1

valgrind ×1

verilog ×1

x86-64 ×1