У меня есть ассемблерная программа, и я стараюсь ее понять. (Я действительно профилирую его). Есть ли инструмент/редактор Linux, который бы немного структурировал его для меня? Отображение, где циклов/скачков будет достаточно. Удобное описание того, что делает инструкция, было бы замечательно.Инструмент для понимания ассемблерных программ?
ответ
Asm plugin for Eclipse Вы могли бы использовать.
Однако, как правило, IDE не используются для программирования сборки. Я не уверен, насколько лучше вы поймете, как легко поймете, где прыжки и петли - вы все равно должны все прочесть.
Snap! лол...... –
Не очень, но вы всегда можете посмотреть на ссылки инструкции, используйте подсветку синтаксиса (VIM синтаксис asm), также вы можете выполнить его через отладчик, если нет никаких ограничений на его запуск. Для уже собранного кода это может быть интересно: LIDA
Если вы ищете что-то похожее на OllyDbg, но для Linux, вы можете попробовать edb.
Поскольку вы действительно меняете язык высокого уровня для профилирования, вы можете сделать пару вещей, чтобы помочь процессу. Сначала включите и сохраните информацию об отладке в компиляторе и компоновщике C++ (не позволяйте этому strip
исполняемый файл). В g ++ флаг командной строки -g
делает это. Во-вторых, многие компиляторы C++ имеют флаги для вывода исходного исходного кода, а не для удаления объектного кода (который используется компоновщиком). В g ++ флаг -S
позволяет это.
Сборку из компилятора можно сравнить с сборкой с демонтажа oprofile.
Я не очень хорошо разбираюсь в декомпиляторах, но два из них содержат another SO post: Boomerang и REC для C, а не C++.
Я надеюсь, что это поможет.
Только для PowerPC CPU Проект Demono предназначен для восстановления алгоритмов двоичного кода (в настоящее время только для PPC) - и это не полностью декомпилятор. Проект находится в стадии разработки, но некоторые примеры - это работы. Сайт имеет онлайн сервис для генерации C-как описание функций из assebler: online service for decompile PPC asm
Для использования его, необходимо выполнить следующие действия:
- разбирайте двоичный код (для PowerPC) в тексте ассемблере (МАР)
- Вставка текста assebler в поле «Ассемблер»
- Нажмите кнопку «Восстановить»
- Посмотрите, чтобы сформировать «восстановленный алг оритм»
Например, если ваш ассемблер текст:
funct(){
0x00000002: cmpw r3, r4
0x00000003: ble label_1
0x00000004: mr r6, r3
0x00000005: b label_2
0x00000006: label_1:
0x00000007: mr r6, r4
0x00000008: label_2:
0x00000009: cmpw r6, r5
0x0000000A: ble label_3
0x0000000B: mr r7, r6
0x0000000C: b label_4
0x0000000D: label_3:
0x0000000E: mr r7, r5
0x0000000F: label_4:
0x00000010: mr r3, r7
0x00000011: blr
}
Интернет сервис восстановления следующее описание алгоритма функция в:
funct(arg_w_0, arg_w_1, arg_w_2){
if(arg_w_0>arg_w_1?true?false){
arg_w_0=arg_w_1;
}else{
}
if(arg_w_0>arg_w_2?true?false){
arg_w_0=arg_w_2;
}else{
}
return (arg_w_0);
}
И, следовательно, FUNCT() получить максимум из трех числа - max3().
Возможно, эта услуга поможет вам понять, как работает инструкции ассемблера ..
- 1. Метод или инструмент для понимания комплексного кода
- 2. SOOT как инструмент анализа программ для Javascript
- 3. Рекомендуемый инструмент для статического анализа программ для VS2010
- 4. Как использовать инструмент linux perf для понимания кода
- 5. Опустить ключевое слово ассемблера для ассемблерных функций
- 6. Недостаток понимания фьючерсов для понимания
- 7. Регистрация списка программ Windows для установленных программ
- 8. Есть ли инструмент для непосредственного запуска программ с аргументами?
- 9. Какая среда/инструмент для написания автономных программ Spark в Java?
- 10. Есть ли инструмент статического инвариантного обнаружения для программ C?
- 11. Gdb прыгает с некоторыми частями ассемблерных кодов
- 12. визуализатор кода для программ Racket
- 13. Инструмент для визуализации сокетов
- 14. iOS выбор программ из программ для фотографий
- 15. Каков правильный способ соединения ассемблерных соединений TcpListener?
- 16. Как отключить отображение ассемблерных кодов при отладке?
- 17. Stack манипуляции в C без использования ассемблерных
- 18. Трубопровод для понимания компьютером
- 19. Scala «<-» для понимания
- 20. Scala для понимания эффективности?
- 21. Параллельные для понимания
- 22. C# двойной для понимания?
- 23. Вложенное ленивое для понимания
- 24. для понимания петли
- 25. Обработка исключения для понимания
- 26. Scala для-понимания синтаксиса
- 27. Scala Будущее для понимания
- 28. счетчик в для понимания
- 29. для понимания с isinstance
- 30. Предпосылки для понимания алгоритмов?
У вас есть исходный код сборки, или вы используете дизассемблер на исполняемый файл? - Вы знаете сборку? x86 (32-разрядный) процессор? – mctylr
У меня есть источник, сбрасываемый oprofile. Поэтому я думаю, что он похож на формат objdump. У меня есть источник, но с тяжелой оптимизацией oprofile (objdump?) Не удается найти соответствие между ASM и C++. –
Итак, у вас есть разборка исполняемого файла, написанная на C++. Это совсем другой вопрос, чем понимание программы, первоначально написанной в сборке, потому что вы хотите установить соединение между конкретными инструкциями по сборке и исходным источником C++. Первое, что вы можете сделать, это убедиться, что компилятор C++ запущен _with debugging enabled_, поэтому дополнительная дополнительная информация отладки остается в исполняемом файле для дизассемблера для ссылки. Демонсаторы только возвращают процесс обратно к сборке. Существует также процесс декомпиляции. Это имеет тенденцию быть более трудным и не очень хорошим результатом. – mctylr