Дизассемблировать в x86_64 на OSX10.6 (но с _Intel_ Syntax)

Я знаю о otool -tv, но я бы предпочел использовать синтаксис Intel, а не AT&T, главным образом для того, чтобы легко следовать по книге и не просматривать тысячи % и $.

Я также был бы признателен за любые советы о том, где я могу найти файл конфигурации gdb.

РЕДАКТИРОВАТЬ: я забыл: у меня 64-битный процессор, но мне было интересно, можно ли также разобрать на 32-битную сборку? Не только это, но и команда OSX gdb list работает иначе, чем стандартная версия GNU?

Огромное спасибо!

(Кроме того, если у вас есть идея, где я мог бы найти небольшой дизассемблер из C -> MIPS, было бы очень весело поиграть с ним. Но не обязательно!)


person Isaac    schedule 13.11.2009    source источник
comment
C -> MIPS — это не дизассемблирование, это компиляция. C - это исходный код высокого уровня, а не машинный код. На godbolt.org (обозреватель компилятора) установлен MIPS GCC, и с clang вы можете использовать -O3 -target mips или -O3 -target mips64. Если Apple Clang для MacOS имеет поддержку, возможно, вы сможете использовать clang -target mips -S на своем рабочем столе.   -  person Peter Cordes    schedule 05.07.2019


Ответы (5)


Чтобы ответить на ваш второй вопрос, если код был скомпилирован в толстый двоичный файл как с 64-битным, так и с 32-битным, вы можете использовать otool -arch i386 -tv для дизассемблирования 32-битного фрагмента двоичного файла; otool -arch x86_64 -tv даст вам 64-битную часть (в SnowLeopard это также поведение по умолчанию, если не передан флаг -arch).

Также обратите внимание, что хотя otool не поддерживает синтаксис Intel, gdb (set disassembly-flavor intel) и XCode (Настройки -> Отладка -> Стиль дизассемблирования) поддерживают.

person Stephen Canon    schedule 13.11.2009
comment
Спасибо! Я соглашусь с этим, хотя мне все еще интересно узнать о MIPS :) Жаль, что otool не поддерживает синтаксис Intel. - person Isaac; 13.11.2009
comment
Если это препятствие для вас, вы должны сообщить об ошибке с просьбой добавить эту функцию (вам нужно будет настроить учетную запись ADC, если у вас ее еще нет): developer.apple.com/BugReporter - person Stephen Canon; 13.11.2009

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

В последних версиях macOS (у меня 10.14.5) доступна команда objdump, основанная на LLVM и не из проекта GNU. Он предлагает (скрытый) вариант дизассемблирования с использованием синтаксиса Intel. Например, /bin/echo можно разобрать следующим образом:

objdump -disassemble -x86-asm-syntax=intel /bin/echo
person Michel Schinz    schedule 04.07.2019
comment
Это llvm-objdump. В моей системе Linux llvm-objdump поставляется с пакетами clang/llvm и принимает эти параметры. Руководство: llvm.org/docs/CommandGuide/llvm-objdump.html - person Peter Cordes; 05.07.2019

С помощью Objdump вы можете дизассемблировать с помощью -d -M intel, и, по-видимому, -m можно использовать для указания архитектура.

person Bastien Léonard    schedule 13.11.2009
comment
Я понимаю это - к сожалению, objdump не работает/не поставляется с OSX. - person Isaac; 13.11.2009
comment
Я считаю, что вы можете получить objdump на OSX, если вы установите gdb binutils с помощью macports или homebrew. В какой-то момент он у меня был, но я предпочел использовать otool, поскольку на самом деле это инструмент OSX. Я согласен, однако, хотел бы, чтобы синтаксис Intel был в самом otool. - person Jarsen; 25.01.2011
comment
Если вы устанавливаете binutils с помощью homebrew, имя исполняемого файла — gobjdump. Он немного глючит и вылетает после генерации вывода, но... это лучше, чем ничего! - person ; 07.11.2015
comment
У меня есть версия objdump для Mac, но я не смог заставить ее дизассемблировать код x64. - person Ghita; 19.12.2017

Для GDB в вашем файле .gdbinit добавьте:

установить вкус разборки intel

тогда это будет синтаксис по умолчанию для gdb.

person user379217    schedule 17.06.2011

Вы можете использовать A2I для перевода синтаксиса AT&T на Intel: http://membres.lycos.fr/placr/a2i.html

person Victor Hurdugaci    schedule 13.11.2009
comment
Это не совсем то, что я ищу — оба синтаксиса достаточно легко читаются. Это скорее вопрос облегчения моей жизни; использование A2I добавляет шаги, которые я предпочел бы не предпринимать, за небольшое вознаграждение. Однако, спасибо! - person Isaac; 13.11.2009
comment
Эта ссылка сейчас не работает. - person Assad Ebrahim; 21.08.2014