Как преобразовать дизассемблированную инструкцию, чтобы она отображалась в двоичном формате в gdb? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть двоичный файл, который я разобрал в видимую сборку в gdb.Тем не менее, я хотел бы видеть фактический двоичный файл каждой инструкции (т.е. фактическую инструкцию в любом формате инструкции, в котором она фактически выдается процессору).Есть ли способ ввести адрес инструкции и увидеть эту инструкцию в двоичном виде?

Я пробовал p / t 0x -------- для любого адреса, но сам адрес декодировал в двоичный,Я пробовал то же самое, но с $ 0x --------, это привело к ошибке «Значение не может быть преобразовано в целое число».

Я просто хотел бы увидетьинструкция, такая как lwi или ori по заданному адресу, например 0x00000300, в двоичном виде, как видит ее GDB.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Я нашел решение, это было написать следующую команду:

p / x * [шестнадцатеричный адрес]

Так, например:

p / x *0x00000300

0 голосов
/ 03 июля 2019

Вы ищете disassemble/r 0x....

Из руководства :

print the raw instructions in hex as well as in symbolic
form by specifying the /r modifier. 

Обновление:

Я вижу в компоновке asm инструкции по сборке, полученные из моего двоичного файла. Но сам по себе запуск команды disassemble не позволяет мне что-либо увидеть, так как он говорит: «Ни одна функция не содержит указанный адрес».

Таким образом, ваш двоичный файл удален (или, по крайней мере, GDB не знает, где находится ближайшая функция).

Решение состоит в том, чтобы разобрать только интересующую вас инструкцию. Например:

(gdb) disas 0x0000555555556d60
No function contains specified address.

(gdb) disas 0x0000555555556d60,+1
Dump of assembler code from 0x555555556d60 to 0x555555556d61:
   0x0000555555556d60:  mov    %edi,%eax
End of assembler dump.

(gdb) disas/r 0x0000555555556d60,+1
Dump of assembler code from 0x555555556d60 to 0x555555556d61:
   0x0000555555556d60:  89 f8   mov    %edi,%eax
End of assembler dump.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...