哪些处理器指令最常用?

Which processor instructions are used most commonly?

我的objective是比较研究几个指令集架构
对于每个指令集架构,如何找到最常用的指令?

这是我想到的步骤:

这里有一篇关于 x86 机器码统计的非常好的研究: https://www.strchr.com/x86_machine_code_statistics

我试过下面的反汇编命令,但似乎不能正确反汇编。反汇编代码显示了一些 das 指令,这些指令不应出现在实际代码中。

ndisasm -b32 -a $(which which)

你可以试试这个,从 .text 部分收集助记符:

objdump --no-show-raw-insn \
        -M intel           \
        -sDj .text $(which *program name*) | # <-- disassemble .text section
             sed -n '/<\.text>/, $ p'      | # <-- skip raw hex
             awk '{ = ""; print}'        | # <-- remove offsets
             sed '1d'                        # <-- delete annoying <.text> in first line

之后你可以只得到助记词名称,追加awk '{print }' 之前的命令,或以某种方式改变数据。

完成所有这些后,将 sort | uniq -c 添加到前面的步骤。 所以我得到的命令看起来像:

objdump --no-show-raw-insn \
        -M intel           \
        -sDj .text $(which *program name*) | 
             sed -n '/<\.text>/, $ p'      | 
             awk '{ = ""; print}'        |
             sed '1d'                      |
             awk '{print }' | sort | uniq -c

从程序的文本部分打印出每个助记符的频率