Полная версия этой страницы:
Неиспользуемые метки
Sergei Frolov
May 23 2007, 07:52
Есть большой исходник на ассемблере. Там имеется куча подпрограмм, и не все они используются в программе.
Есть ли способы узнать, какие метки не использованы напрямую при компиляции? Есть ли какие-нибудь программы по этому поводу, утилиты и пр.?
CD_Eater
May 23 2007, 07:56
Несложно написать самому.
Цитата
Есть ли способы узнать, какие метки не использованы напрямую при компиляции
кометировать по одной (закоментировать "//") метке, и компилировать и т. д. ошибка есть, значит используется.. нет не используется...
Sergei Frolov
May 23 2007, 08:09
Было бы несложно, я бы сам и написал.
Но меня интересует, есть ли способы узнать, какие метки не использованы напрямую при компиляции? Есть ли какие-нибудь программы по этому поводу, утилиты и пр.?
SasaVitebsk
May 23 2007, 08:09
Метки место не занимают. Используемые или не используемые. А если на метку нету ссылки, то это ещё совсем не значит, что данный код не используется. Так что придётся делать анализ программный и потом внимательно просматривать выявленные случаи.
Sergei Frolov
May 23 2007, 08:11
Цитата(add @ May 23 2007, 11:06)

кометировать по одной (закоментировать "//") метке, и компилировать и т. д. ошибка есть, значит используется.. нет не используется...
Спасибо. Но это долго, когда количество подпрограмм за сотню.
Мне хочется видеть сразу списком.
Цитата(Sergei Frolov @ May 23 2007, 11:52)

Есть большой исходник на ассемблере. Там имеется куча подпрограмм, и не все они используются в программе.
Есть ли способы узнать, какие метки не использованы напрямую при компиляции? Есть ли какие-нибудь программы по этому поводу, утилиты и пр.?
Объявить каждую подпрограмму как PUBLIC и разделить по модулям
потом в map файле посмотреть какие модули используются
для IAR директивы MODULE ENDMOD
Sergei Frolov
May 23 2007, 08:13
Цитата(SasaVitebsk @ May 23 2007, 11:09)

Метки место не занимают. Используемые или не используемые. А если на метку нету ссылки, то это ещё совсем не значит, что данный код не используется. Так что придётся делать анализ программный и потом внимательно просматривать выявленные случаи.
Это всё понятно. Это частный случай. Для начала мне нужно убрать неиспользуемые метки.
Скомпилировать!
Потом загрузить в IDA и посмотреть
Sergei Frolov
May 23 2007, 08:24
А серьезно?
Можно, наверное, воспользоваться каким-нибудь редактором, в котором реализован поиск. Загружаете Ваш исходник в редактор, и пытаетесь найти имя первой программы-кандидата на вычеркивание. Если нашли только один раз (нет вызова), этим же редактором можно поправить исходник - выкинуть подпрограмму. Такая процедура будет длинной - необходимо будет пройти в несколько проходов: программа, вызов которой обнаружился в выброшенной программе, может уже и не использоваться!
Sergei Frolov
May 23 2007, 08:38
Цитата(Палыч @ May 23 2007, 11:36)

Можно, наверное, воспользоваться каким-нибудь редактором, в котором реализован поиск. Загружаете Ваш исходник в редактор, и пытаетесь найти имя первой программы-кандидата на вычеркивание. ...
Комментировать метки и перекомпилировать быстрее, чтобы компилятор ругался или нет. Но мне хочется получить сразу список.
Цитата(Sergei Frolov @ May 23 2007, 12:24)

А серьезно?
Так серьезно! IDA прекрасно покажет какие части программы используются!
defunct
May 23 2007, 14:52
Цитата
Есть большой исходник на ассемблере.
Большой это сколько строк?
Sergei Frolov
May 24 2007, 04:41
Цитата(defunct @ May 23 2007, 17:52)

Большой это сколько строк?
Около 40000-50000 по листингу.
Sergei Frolov
May 24 2007, 07:22
Цитата(KRS @ May 24 2007, 10:12)

И все в одном файле?
Конечно в одном, так удобнее с точки зрения навигации. (шутка)
Штук 20.
Цитата(Sergei Frolov @ May 24 2007, 11:22)

Конечно в одном, так удобнее с точки зрения навигации. (шутка)
Штук 20.
Так тогда же каждый файл это отдельный модуль и если на него ссылок нет linker сам его должен выкинуть!
надо map файл посмотреть
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.