Онлайн дизассемблер i8080/i8085/Z80
Moderator: Shaos
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Онлайн дизассемблер i8080/i8085/Z80
Несмотря на то, что дизассемблер -- вещь универсальная и не привязана к конкретной архитектуре, размещаю я его здесь, потому что мой проект связан с Радио-86РК.
Представляю вашему вниманию свою реализацию дизассемблера для 8-битных процессоров i8080/i8085/Z80.
Я его использовал для исследования МОНИТОР'ов разных ретрокомпьютеров, также планирую его применять для дизассемблирования игр и адаптации их под свой проект.
Из возможностей: отделение области данных от кода -- это когда вместо абсолютных адресов в командах чтения/записи из/в память используются метки на сегменты данных (декларирование переменных); имеется возможность скакать туда-сюда по меткам в исходном коде, что очень помогает при анализе кода; задание границ областей данных прямо из дампа; знает недокументированные команды.
Жду ваши комментарии/замечания/предложения по улучшению дизассемблера.
Адрес: https://86rk.ru/disassm/
Также, обновился редактор знакогенератора viewtopic.php?f=93&t=10859
Представляю вашему вниманию свою реализацию дизассемблера для 8-битных процессоров i8080/i8085/Z80.
Я его использовал для исследования МОНИТОР'ов разных ретрокомпьютеров, также планирую его применять для дизассемблирования игр и адаптации их под свой проект.
Из возможностей: отделение области данных от кода -- это когда вместо абсолютных адресов в командах чтения/записи из/в память используются метки на сегменты данных (декларирование переменных); имеется возможность скакать туда-сюда по меткам в исходном коде, что очень помогает при анализе кода; задание границ областей данных прямо из дампа; знает недокументированные команды.
Жду ваши комментарии/замечания/предложения по улучшению дизассемблера.
Адрес: https://86rk.ru/disassm/
Также, обновился редактор знакогенератора viewtopic.php?f=93&t=10859
You do not have the required permissions to view the files attached to this post.
-
- Devil
- Posts: 909
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Онлайн дизассемблер i8080/i8085/Z80
Интересно попробовать. Судя по нику топикстартера я - его тёска и одноготка... 

-
- Fanat
- Posts: 57
- Joined: 24 Aug 2022 23:08
Re: Онлайн дизассемблер i8080/i8085/Z80
Почему то зависает когда доходит до такого кода.
22 05 41
22 04 41
22 06 41 тут зависает, если 41 забить 00 то идет нормально.
22 07 41
22 21 CE
22 08 41
22 05 41
22 04 41
22 06 41 тут зависает, если 41 забить 00 то идет нормально.
22 07 41
22 21 CE
22 08 41
-
- Fanat
- Posts: 57
- Joined: 24 Aug 2022 23:08
Re: Онлайн дизассемблер i8080/i8085/Z80
и еще косяк заметил, не распознает (точнее распознает и помечает даже) иногда константы в программе, из за чего константы воспринимаются как команды (несмотря на то что помечены), видимо этот алгоритм стоит улучшать.
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Онлайн дизассемблер i8080/i8085/Z80
здорово, что отписались об ошибке, как будет время -- посмотрю.
на счёт констант не понял. можете привести пример кода и какие опции были включены? или скриншот.
на счёт констант не понял. можете привести пример кода и какие опции были включены? или скриншот.
-
- Fanat
- Posts: 57
- Joined: 24 Aug 2022 23:08
Re: Онлайн дизассемблер i8080/i8085/Z80
да сделаю, но несколько позже как бинарник в исходное состояние верну.
Дизассемблер парсит код по порядку без прохода по командам перехода?
Просто мне тут подсказали что так с константами раскиданными по свободным местам в дампе ведут себя многие дизассемблеры, так что наверное ничего страшного в таких ошибках нет. Ida pro вообще сказала "показывай мне тут каждый кусок кода в ручную" ...
И есть вопросы по поводу сгенерированного кода, а то описание крайне краткое. Почему он некоторые данные определяет как
хотя указано явно как 3E18h
и что означают цифры в квадратных скобках.
.
Дизассемблер парсит код по порядку без прохода по командам перехода?
Просто мне тут подсказали что так с константами раскиданными по свободным местам в дампе ведут себя многие дизассемблеры, так что наверное ничего страшного в таких ошибках нет. Ida pro вообще сказала "показывай мне тут каждый кусок кода в ручную" ...
И есть вопросы по поводу сгенерированного кода, а то описание крайне краткое. Почему он некоторые данные определяет как
Code: Select all
1CB1: 21 18 3E LXI H,V_3E11+7
и что означают цифры в квадратных скобках.
Code: Select all
1CB0: FB SUB71: EI ; [2]
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Онлайн дизассемблер i8080/i8085/Z80
дизассемблер пытается определить размерность переменных и чтоб не плодить тучу переменных, он может за базу использовать уже имеющуюся, тут надо смотреть код. можете скинуть бинарник? самому интересно откуда взялось "+7".
числа в квадратных скобках -- это количество ссылок на данную метку, можете навести мышку на имя метки и узнать, кто на нее ссылается, тут же перейти на них, а потом вернуться обратно правой кнопкой мышки.
числа в квадратных скобках -- это количество ссылок на данную метку, можете навести мышку на имя метки и узнать, кто на нее ссылается, тут же перейти на них, а потом вернуться обратно правой кнопкой мышки.
-
- Fanat
- Posts: 57
- Joined: 24 Aug 2022 23:08
Re: Онлайн дизассемблер i8080/i8085/Z80
Да все понял, там местами таких с + значений кучкой встречается.
файл скинул на почту.
по адресу 2000h надо поставить код 01h это константа, программа выполняется в этом месте с 2001h, точка входа 0000h процессор 8080. ОЗУ c 3C00h по 3FFFh выше пусто, но могут быть условные переходы в диапазон 5000h-5FFFh там еще ПЗУ могут быть, но меняется и блок данных с адреса 2000h-2FFFh и возможно еще в какие то адреса выше но мне пока сменные модули неизвесты которые могли там подключать ПЗУ
команды undocumented получаются из за того что константы так по ишачьи раскиданы, и сбивается последовательность.
Ну тут возможно причина что именно по ишачьи написан код, я с точки входа пошел я уже проклял этого кодера... А хотя только до середины самоконтроля добрался.
файл скинул на почту.
по адресу 2000h надо поставить код 01h это константа, программа выполняется в этом месте с 2001h, точка входа 0000h процессор 8080. ОЗУ c 3C00h по 3FFFh выше пусто, но могут быть условные переходы в диапазон 5000h-5FFFh там еще ПЗУ могут быть, но меняется и блок данных с адреса 2000h-2FFFh и возможно еще в какие то адреса выше но мне пока сменные модули неизвесты которые могли там подключать ПЗУ
команды undocumented получаются из за того что константы так по ишачьи раскиданы, и сбивается последовательность.
Ну тут возможно причина что именно по ишачьи написан код, я с точки входа пошел я уже проклял этого кодера... А хотя только до середины самоконтроля добрался.
-
- Fanat
- Posts: 80
- Joined: 01 Jan 2023 11:37
Re: Онлайн дизассемблер i8080/i8085/Z80
Полезная штука, но у меня почему-то заголовки оффесетов сверху съехали и криво как-то работает выделение строк в хех-дампе, если они занимают более одной строки в ффоксе около 100-й версии.
-
- Senior
- Posts: 165
- Joined: 12 Jan 2023 07:26
Re: Онлайн дизассемблер i8080/i8085/Z80
Запустил с сайта rk86.ru Forth (Форт)
Сделал дамп памяти в файл
Скормил файл дизассемблеру на сайте 86rk.ru
Не смог дождаться какого то результата.
Сделал дамп памяти в файл
Скормил файл дизассемблеру на сайте 86rk.ru
Не смог дождаться какого то результата.
-
- Fanat
- Posts: 80
- Joined: 01 Jan 2023 11:37
Re: Онлайн дизассемблер i8080/i8085/Z80
Дамп нужно сконвертировать в бинарник было, а то он там в json по умолчанию.
-
- Senior
- Posts: 181
- Joined: 17 Jun 2014 04:29
- Location: 93.80.157.217
Re: Онлайн дизассемблер i8080/i8085/Z80
скиньте файл на почту, я гляну, что не работаетforthuser wrote:Запустил с сайта rk86.ru Forth (Форт)
Сделал дамп памяти в файл
Скормил файл дизассемблеру на сайте 86rk.ru
Не смог дождаться какого то результата.
-
- Senior
- Posts: 165
- Joined: 12 Jan 2023 07:26
Re: Онлайн дизассемблер i8080/i8085/Z80
Зачем, если его можно получить Online из программы https://rk86.ru (выбор Forth из выпадающего списка программ в нижней части Online симулятора и запуск его Run, а далее Memory)vital72 wrote:скиньте файл на почту, я гляну, что не работает
P.S. Возможно, если сам файл Forth.rki дать программе дизасемблирования, то она "лучше" справиться, но не думаю т.к. Форт в классическом его построении плохо подходит для обычного
дизассемблирования, если это не учитывать. (в программе emu80 он тоже есть)
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Онлайн дизассемблер i8080/i8085/Z80
Если знать, как собственно, устроен Форт, то весьма даже неплохо подходит для обычногоforthuser wrote:Форт в классическом его построении плохо подходит для обычного
дизассемблирования, ...
дизассемблирования.
Листинг получается довольно регулярный и осмысленный в общем-то...
Бывают и похуже кандидаты на декомпиляцию.

iLavr
-
- Senior
- Posts: 165
- Joined: 12 Jan 2023 07:26
Re: Онлайн дизассемблер i8080/i8085/Z80
Да, но IDA Форт бинарники не понимает, если ничего не предпринимать дополнительно.Lavr wrote:Если знать, как собственно, устроен Форт, то весьма даже неплохо подходит для обычного
дизассемблирования.
Листинг получается довольно регулярный и осмысленный в общем-то...
Бывают и похуже кандидаты на декомпиляцию.
Х.З. как в этом случае авторы построили систему. Вероятно по классике.
P.S. Здесь даже почти отреверсена Starflight с Форт в Си для запуска с помощью Си (SDL) (запускал её)