objdump для старого ARM7TDMI (ARMv4T), показывающий инструкции для более новых архитектур? - PullRequest
0 голосов
/ 16 июня 2009

Я очень переживаю за успех GNU и хотел бы получить отзывы о что делать с потенциальной ошибкой в ​​objdump для ARM ....

Я проверяю вывод "objdump -D --target = binary -m arm7tdmi" и вижу инструкции, которых нет на древних ядрах ARM7TDMI.

(Я смотрю на файл случайных битов и рассматриваю его как необработанный двоичный файл, а не файл ELF.)

Например, mrcc, blx и ldc2 появились только в ARMv5 или новее, но я их вижу в выводе с переключателями командной строки выше.

(я вижу такие же проблемы с "-m armv4t".)

Я использую версию 2.19.1-multiarch из Ubuntu 9.04.

Это настоящая ошибка или я должен использовать другие переключатели?

С уважением,

1017 * Крис *

Ответы [ 2 ]

2 голосов
/ 16 июня 2009

Я пойман на этих вещах и для некоторых других архитектур (не ARM). Objdump не знает, разбираете ли вы код или части данных, и постарается разобрать его, включая константы и другие части данных.

2 голосов
/ 16 июня 2009

Ну, это точно не ошибка, поскольку, если вы просматриваете старый двоичный файл, вы не ожидаете увидеть такие инструкции в потоке инструкций, поэтому они не будут отображаться.

Следовательно, он по-прежнему будет правильно отображать правильный код.

Если вы заставили дизассемблер objdump дизассемблировать области памяти, которые содержали не код, а данные других типов (например, с использованием флага -D), вы можете ожидать следующие аномальные результаты:

  • данные, которые не являются инструкциями, отображаются как инструкции, действительные для этой архитектуры
  • данные, которые не являются инструкциями, отображаются как инструкции, которые недопустимы для этой архитектуры.
  • данные, которые не являются инструкциями, отображаются как недопустимые инструкции (о, нет!)

Мне трудно позаботиться о любом из них, так как вы указали -D, и это то, что он делает.

Если бы вы могли указать на пример правильного и действительного потока команд, который декодируется по-разному из-за переопределения кодирования команды, имеющего другой эффект, то я думаю, что это будет подлинной ошибкой.

Ваш пример вызвал какие-то проблемы (включая неудобства) в вашей работе?

...