【问题标题】:Instruction Type and Count指令类型和计数
【发布时间】:2013-03-28 17:24:23
【问题描述】:
  1. 我需要找出(动态)(汇编)指令并计算我的 C 程序。我期望的输出类似于以下

    mov  200
    
    pop  130
    
    jne  48
    

    我尝试了valgrind --tool=callgrind --cache-sim=yes --dump-instr=yes <my program name> 并使用 Kcahcegrind 查看了它。我确实找到了指令类型,但计数信息不存在。我想过滤输出以丢弃由于系统库等而产生的指令。

  2. 我需要找出在某些特定函数和程序的某些部分中使用 malloc 分配的内存地址和大小。我做了一些堆分析,但它给出了整个堆的大小。有什么建议吗?

  3. 我想知道我的程序的函数访问了哪些内存位置。换句话说,我需要找出我的程序的内存访问模式。计算负载有帮助吗?如果是,那么我如何计算负载?

【问题讨论】:

    标签: c memory count instructions


    【解决方案1】:

    看看objdump:

    http://sourceware.org/binutils/docs/binutils/objdump.html

    我会开始使用objdump -S myprog

    【讨论】:

    • @ThePosy:objdump 给出静态计数。看起来像 41c293: 4c 89 ef mov %r13,%rdi 41c296: 48 c1 e6 09 shl $0x9,%rsi 41c29a: 48 83 ee 01 sub $0x1,%rsi 而且,你可以看到没有计数信息。虽然可以编写一个脚本来帮助计数,但正如我的问题中所述,我对动态计数感兴趣,这意味着指令的数量和类型会根据程序输入而改变。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2019-07-21
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多