Есть старая микрокомпьютерная система с памятью 64 кб.
Есть дамп с микросхемы. Есть дизассемблированный текст.
Надо разобраться где там что. Это более мегабайта ассемблерного текста. Какие есть идеи?
Возникла мысль загрузить весь листинг в базу SQL и проводить анализ программно.
Теперь нужно разработать, как лучше хранить данные. Ясно, что одна команда - одна запись.
Вопрос, какие поля создать. Что в них пихать, чтобы потом удобнее было анализировать.
Почему так удобнее, чем по другому?
1) быстро. все инструменты есть.
2)практически не надо писать программ. только скрипты загрузки.
3)сразу дается ответ на вопрос - какой участок кода что делает.
Например, начинаем с адресов из вектора прерывания. И пляшем от INT0.
Все команды, что идут вслед за ними явно относятся к одной последовательности выполнения.
Я имею в виду, если отслеживать их по определенным правилам, учитывать ветвления, переходы...
После пометки - сделать выборку этих строк из базы, так сразу получится листинг только тех команд и данных, которые выполняются при заданных условиях. Можно спокойно будет разобраться в лапше переходов где какие подпрограммы. Если какой-то участок используется часто и много раз вызывается из разных мест - у него будет много пометок и станет ясно, что подпрограмма.
После такого поверхностного машинного анализа станет ясно чему уделять в первую очередь внимание и самому.
PS: дело осложняется ещё и тем, что дампов несколько. Их нужно ещё и сравнивать параллельно между собой.
Около десятка версий, а некоторые ещё и патченые. Цель - перенести патч в другую версию.
В текстовом файле разделения с помощью символа табуляции (код 09). ";" отделяет комментарий и в нем тоже есть инфа.
Структура полей будет такая :
NSTR номер строки (типа уникальный ID)
ADDR адрес команды в листинге
ASSM команда
NOP число операндов
OP1 первый операнд
OP2 второй операнд
COMM комментарий
далее аналитические поля
http://digital.sibsutis.ru/MCS51/ASM51/def_asm51.htm ЗЗЫЖ решил не изгаляться, а заюзать MCStudio.
PS: неплохая также вещь NoICE
http://www.noicedebugger.com/download.html практически для всех видов процессоров - ARM, 8051 итд. Дизассемблирует код, выполняет в эмуляторе, дает просмотреть регистры.