nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 14:45



Reply to topic  [ 17 posts ]  Go to page 1, 2  Next
Онлайн дизассемблер i8080/i8085/Z80 
Author Message
Online
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 126
Location: 93.80.157.217
Reply with quote
Несмотря на то, что дизассемблер -- вещь универсальная и не привязана к конкретной архитектуре, размещаю я его здесь, потому что мой проект связан с Радио-86РК.
Представляю вашему вниманию свою реализацию дизассемблера для 8-битных процессоров i8080/i8085/Z80.
Я его использовал для исследования МОНИТОР'ов разных ретрокомпьютеров, также планирую его применять для дизассемблирования игр и адаптации их под свой проект.
Из возможностей: отделение области данных от кода -- это когда вместо абсолютных адресов в командах чтения/записи из/в память используются метки на сегменты данных (декларирование переменных); имеется возможность скакать туда-сюда по меткам в исходном коде, что очень помогает при анализе кода; задание границ областей данных прямо из дампа; знает недокументированные команды.
Жду ваши комментарии/замечания/предложения по улучшению дизассемблера.
Адрес: https://86rk.ru/disassm/

Также, обновился редактор знакогенератора http://www.nedopc.org/forum/viewtopic.php?f=93&t=10859


Attachments:
disassm.png
disassm.png [ 168 KiB | Viewed 6087 times ]

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой
22 Jul 2021 03:36
Profile WWW
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Интересно попробовать. Судя по нику топикстартера я - его тёска и одноготка... :wink:


22 Jul 2021 07:26
Profile
Writer

Joined: 24 Aug 2022 23:08
Posts: 23
Reply with quote
Почему то зависает когда доходит до такого кода.
22 05 41
22 04 41
22 06 41 тут зависает, если 41 забить 00 то идет нормально.
22 07 41
22 21 CE
22 08 41


31 Aug 2022 20:32
Profile
Writer

Joined: 24 Aug 2022 23:08
Posts: 23
Reply with quote
и еще косяк заметил, не распознает (точнее распознает и помечает даже) иногда константы в программе, из за чего константы воспринимаются как команды (несмотря на то что помечены), видимо этот алгоритм стоит улучшать.


01 Sep 2022 09:48
Profile
Online
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 126
Location: 93.80.157.217
Reply with quote
здорово, что отписались об ошибке, как будет время -- посмотрю.
на счёт констант не понял. можете привести пример кода и какие опции были включены? или скриншот.

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


03 Sep 2022 00:03
Profile WWW
Writer

Joined: 24 Aug 2022 23:08
Posts: 23
Reply with quote
да сделаю, но несколько позже как бинарник в исходное состояние верну.
Дизассемблер парсит код по порядку без прохода по командам перехода?
Просто мне тут подсказали что так с константами раскиданными по свободным местам в дампе ведут себя многие дизассемблеры, так что наверное ничего страшного в таких ошибках нет. Ida pro вообще сказала "показывай мне тут каждый кусок кода в ручную" ...

И есть вопросы по поводу сгенерированного кода, а то описание крайне краткое. Почему он некоторые данные определяет как
Code:
1CB1:   21 18 3E     LXI   H,V_3E11+7


хотя указано явно как 3E18h

и что означают цифры в квадратных скобках.

Code:
1CB0:   FB      SUB71:   EI         ; [2]

.


05 Sep 2022 06:48
Profile
Online
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 126
Location: 93.80.157.217
Reply with quote
дизассемблер пытается определить размерность переменных и чтоб не плодить тучу переменных, он может за базу использовать уже имеющуюся, тут надо смотреть код. можете скинуть бинарник? самому интересно откуда взялось "+7".
числа в квадратных скобках -- это количество ссылок на данную метку, можете навести мышку на имя метки и узнать, кто на нее ссылается, тут же перейти на них, а потом вернуться обратно правой кнопкой мышки.

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


05 Sep 2022 13:52
Profile WWW
Writer

Joined: 24 Aug 2022 23:08
Posts: 23
Reply with quote
Да все понял, там местами таких с + значений кучкой встречается.
файл скинул на почту.
по адресу 2000h надо поставить код 01h это константа, программа выполняется в этом месте с 2001h, точка входа 0000h процессор 8080. ОЗУ c 3C00h по 3FFFh выше пусто, но могут быть условные переходы в диапазон 5000h-5FFFh там еще ПЗУ могут быть, но меняется и блок данных с адреса 2000h-2FFFh и возможно еще в какие то адреса выше но мне пока сменные модули неизвесты которые могли там подключать ПЗУ
команды undocumented получаются из за того что константы так по ишачьи раскиданы, и сбивается последовательность.
Ну тут возможно причина что именно по ишачьи написан код, я с точки входа пошел я уже проклял этого кодера... А хотя только до середины самоконтроля добрался.


05 Sep 2022 14:46
Profile
Fanat

Joined: 01 Jan 2023 11:37
Posts: 80
Reply with quote
Полезная штука, но у меня почему-то заголовки оффесетов сверху съехали и криво как-то работает выделение строк в хех-дампе, если они занимают более одной строки в ффоксе около 100-й версии.


27 Jan 2023 01:28
Profile
Senior

Joined: 12 Jan 2023 07:26
Posts: 165
Reply with quote
Запустил с сайта rk86.ru Forth (Форт)
Сделал дамп памяти в файл
Скормил файл дизассемблеру на сайте 86rk.ru

Не смог дождаться какого то результата.


27 Jan 2023 02:10
Profile
Fanat

Joined: 01 Jan 2023 11:37
Posts: 80
Reply with quote
Дамп нужно сконвертировать в бинарник было, а то он там в json по умолчанию.


27 Jan 2023 03:17
Profile
Online
Senior
User avatar

Joined: 17 Jun 2014 04:29
Posts: 126
Location: 93.80.157.217
Reply with quote
forthuser wrote:
Запустил с сайта rk86.ru Forth (Форт)
Сделал дамп памяти в файл
Скормил файл дизассемблеру на сайте 86rk.ru

Не смог дождаться какого то результата.


скиньте файл на почту, я гляну, что не работает

_________________
https://radio-86rk.ru
кто я такой, чтобы спорить с самим собой


27 Jan 2023 03:20
Profile WWW
Senior

Joined: 12 Jan 2023 07:26
Posts: 165
Reply with quote
vital72 wrote:
скиньте файл на почту, я гляну, что не работает

Зачем, если его можно получить Online из программы https://rk86.ru (выбор Forth из выпадающего списка программ в нижней части Online симулятора и запуск его Run, а далее Memory)

P.S. Возможно, если сам файл Forth.rki дать программе дизасемблирования, то она "лучше" справиться, но не думаю т.к. Форт в классическом его построении плохо подходит для обычного
дизассемблирования, если это не учитывать. (в программе emu80 он тоже есть)


27 Jan 2023 03:42
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
forthuser wrote:
Форт в классическом его построении плохо подходит для обычного
дизассемблирования, ...

Если знать, как собственно, устроен Форт, то весьма даже неплохо подходит для обычного
дизассемблирования.
Листинг получается довольно регулярный и осмысленный в общем-то...
Бывают и похуже кандидаты на декомпиляцию. :wink:

_________________
iLavr


27 Jan 2023 08:30
Profile
Senior

Joined: 12 Jan 2023 07:26
Posts: 165
Reply with quote
Lavr wrote:
Если знать, как собственно, устроен Форт, то весьма даже неплохо подходит для обычного
дизассемблирования.
Листинг получается довольно регулярный и осмысленный в общем-то...
Бывают и похуже кандидаты на декомпиляцию. :wink:

Да, но IDA Форт бинарники не понимает, если ничего не предпринимать дополнительно.
Х.З. как в этом случае авторы построили систему. Вероятно по классике.

P.S. Здесь даже почти отреверсена Starflight с Форт в Си для запуска с помощью Си (SDL) (запускал её)


27 Jan 2023 08:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 17 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: vital72 and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.