Какие инструкции процессора используются чаще всего? - PullRequest
2 голосов
/ 20 февраля 2020

Моя цель - провести сравнительное изучение нескольких архитектур набора команд.
Как мне найти наиболее часто используемые инструкции для каждой архитектуры набора инструкций?

Это шаги, о которых я думаю :

  • Поиск общих ISA для выбранного домена
  • Поиск популярных программ для каждого такого ISA
  • Разборка инструкций программы (.code) (какой инструмент?)
  • Сбор статистики по формату инструкции, коду операции, типу. (какой инструмент?)

Вот очень хорошее исследование статистики машинного кода x86: https://www.strchr.com/x86_machine_code_statistics

Я попробовал приведенную ниже команду для разборки, но похоже, он не разбирается должным образом. Разобранный код показывает некоторые das инструкции, которые не должны присутствовать в реальном коде.

ndisasm -b32 -a $(which which)

1 Ответ

3 голосов
/ 20 февраля 2020

Вы можете попробовать это, чтобы собрать мнемонику из секции .text:

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

После этого вы можете получить только имя мнемоники, добавив awk '{print $1}' к предыдущей команде, или изменив данные каким-либо другим образом.

После всего этого добавьте sort | uniq -c к предыдущим шагам. Поэтому моя результирующая команда выглядела так:

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

, которая выводит частоты каждого мнемони c из текстового раздела программы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...