LINUX.ORG.RU

У gcc есть disassembler?


0

1

только что я жёстко лохонулся. Ну просто очень жёстко. Было 2 файла qwerty.c и qwerty.s, из первого я вызывал функцию написанную на ассемблере и компилил строкой «gcc qwerty.c qwerty.s -o out». И вот мне захотелось посмотреть как компилится в ассемблерный код первый файл и запустил «gcc qwerty.c qwerty.s -S», а тот даже не спросив выдал результат заменив 10килобайт асм-кода написанного потом и кровью. Видимо моя функция осталась только в бинарнике «out» виде опкода.

Подскажите, как дизассемблировать гццшкой??

man objdump

anonymous
()

Никак, у gcc нет дизасма. Дизасм есть в binutils, в бинарнике objdump.

Пользовать так:

objdump -S <file> - intermix source + asm

objdump -D <file> - code + data

p.s. твои файлы на асме, если требуют обработки препроцессора, принято назыавать ».S«, а не ».s«. Тогда автоматически сгенеренные файлы перетереть ничего не могут впринципе. И это, осваивай системы контроля версий - можешь начать с darcs, hg

anonymous
()

> Подскажите, как дизассемблировать гццшкой??

Никак, потому что gcc это компилятор, а не дизассемблер.

anonymous
()
Ответ на: комментарий от anonymous

спасибо «objdump -S out >1.s» дал то что надо. Теперь надо только восстановить исходный синтаксис.

SaintSatanist
() автор топика

Да, оффтоп, но освой бэкапы. Лично я все нужное имею в рабочей папке, после изменения чего-либо копирую в архив.

damnemall
()
Ответ на: комментарий от damnemall

> Да, оффтоп, но освой бэкапы. Лично я все нужное имею в рабочей папке, после изменения чего-либо копирую в архив.

Про системы контроля версий вы наверное в первый раз слышите?

anonymous
()
Ответ на: комментарий от anonymous

> Про системы контроля версий вы наверное в первый раз слышите?

У меня пока ничего серьезного нет, поэтому обхожусь простым копированием.

damnemall
()
Ответ на: комментарий от damnemall

попробуйте ртуть - удобно отслеживать версии. mercurial называется, оно-же hg. в Makefile вставьте, и оно само будет каждый успешный билд сохранять.

drBatty ★★
()

И вот после такого пеанеры кричат что «IDE не нужен» (:

sS ★★★★★
()

Тебе нужен не дизассемблер, а система контроля версий, например Mercurial (он же hg).

I-Love-Microsoft ★★★★★
()

Можно просто сохранять все файлы в папке «Корзина». В этой папке могут быть файлы с одинаковыми именами, поэтому если какой-нибудь файл испортится, всегда можно восстановить файл нужной версии.

anarquista ★★★★★
()
Ответ на: комментарий от anarquista

> папке «Корзина»
Картинки случаем нет? Хоть убейся, не могу представить предмет, одновременно являющийся и папкой, и корзиной.

PayableOnDeath
()
Ответ на: комментарий от Gorthauer

Вроде бы, во всех современных системах предусмотрена многопользоватеьская работа? вы о чем вообще?

anarquista ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.