Важная информация

User Tag List

Страница 25 из 31 ПерваяПервая ... 212223242526272829 ... ПоследняяПоследняя
Показано с 241 по 250 из 304

Тема: DisAsm-11

  1. #241

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Предыстория

    Первой ПЗУ со страничной организацией, которую я дизассемблировал, была от MXV-11. Затем был дизасм ПЗУ от KDJ11-B, потом была попытка дизасма ПЗУ от M11.. Вроде как-то так. Но на M11 слегка обломался, потому что там был использован немного нестандартный подход - не весь код бы размещён на страница одинакового размера, часть кода копировалось в ОЗУ (причём не все слова подряд) и мой первый подход не позволил по быстрому разобраться с (такими) ПЗУ.

    То, как делал первоначально - исходный файл ПЗУ распиливался на отдельные страницы, потом каждая страницы дизасмилась, после чего ручками по одной страницы я это всё дело сшивал в исходник, который после компиляции-сборки на выходе давал идентичный исходному двоичный файл. В процессе так же немного разбирался с логикой работы. Процесс длительный, монотонный и с массой ручной работы. Но в принципе - рабочий вариант

    Затем появился DisAsm и некоторое количество ручной работы испарилось - знай, смотри в окошки и тыкай кнопсы.

    В какой-то момент времени решил добавить поддержку страничных ПЗУ в DisAsm. Первый подход к снаряду, собственно, и реализовывал вышеописанный подход, только стало ещё меньше ручной работы. Плюс - учитывая поддержку в DisAsm макросов - смог сделать автоматическое отслеживание почти для всех сценариев - куда собрался (на какую страницу) перейти код. Но - сшивание отдельных частей - всё ещё ручная работа. Плюс - надо было поправить метки, ибо они генерировались без учёта того, что будет единый файл. То есть - ручной работы стало меньше, но она ещё осталась.

    Получив первый (и неполный вариант), как я уже писал - пришло понимание - куда двигаться дальше.

    Итак - первый (в бОльшей степени ещё концепт)-вариант поддержки страничных ПЗУ: встречаем

    Теперь все страницы - в едином файле и даже какие-то результаты (по адресу M00262 - переход на другую страницу) уже просматриваются. Исходное адресное пространство бьётся (по описанию в файле настроек) на отдельные страницы, можно задавать размер и базовый адрес каждой страницы.

    Что в работе - правильная генерация меток (тут уже более-менее) и правильная генерация операндов (с учётом того, что часть кода НЕ ПЕРЕМЕЩАЕМАЯ и будет располагаться совсем по другим адресам. В прошлом варианте корректировалось макросами, в этом варианте будет (пока никак не реализовано) корректироваться операндами-выражениями. Конкретный пример того, что сейчас будет оттранслировано не корректно - команда MOV по адресу 175266.

    Работа продолжается

  2. #241
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #242

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уф.. Первые РЕАЛЬНЫЕ результаты То есть - после нажатия кнопки "Сгенерировать MAC" на выходе получаем исходник, которые с некоторыми доработками (добавить ссылку на файл макро-определений и убрать неправильные (работаю над этим) .=175000) ТРАНСЛИРУЕТСЯ, СОБИРАЕТСЯ и даёт ИДЕНТИЧНЫЙ исходному файл

    Загрузили, ткнули "Макрокоманда?" для вставки макроса начала страницы
    На ячейке 175200 ткнули P - получили ссылку на ячейку (правое верхнее окно) - неправильную - ибо на другой странице
    "Макрокоманда?" для вставки макроса перехода на другую страницу - и теперь ссылка правильная

    Страшные выражения как аргумент - как раз и позволяют сгенерировать правильные данные, так как в исходнике, с точки зрения MACRO-11 ячейка находится по адресу 1024, но реально она будет на другой странице и по адресу 175024
    Теперь DisAsm начал понимать такие извращения и генерировать правильный аргумент

    Не знаю пока - сколько ещё мест в DisAsm надо поправить, что бы он ВСЕГДА генерировал правильные ссылки и аргументы, но сейчас начинается уже этап целевого тестирования и исправления ошибок и неточностей, так как основа - есть. Ну и наведение красоты в показываемом

    И да - существенную работу делают макросы, в частности, сейчас это (пока?) единственный способ подсказать DisAsm - о какой странице идёт речь

    Так что такую красоту простым тыканьем кнопок (ну, может когда-нибудь, а пока) не получить - нужен предварительный анализ файла (можно в DisAsm-е же), составление файла описания секций (страниц), а затем подготовка шаблонов макросов для DisAsm и самих макросов для исходнка Кстати, для умеющих писать макро-определения и использовать макросы - всё не так уж и страшно

    Технически - вариант с простым тыканьем кнопок тоже возможен, но его сначала надо продумать Но тут, увы, основной упор - в свободное время...

    - - - Добавлено - - -

    Поправил генерацию исходника. Теперь нужно только добавить ссылку на файл макросов.

    Из занимательного - если где-то ссылка ведёт не туда, куда надо - есть шанс, что после сборки новый бинарник с исходным бинарником не совпадёт Особенность страничных ПЗУ

    Немного потыкал кнопсы - результат идентичен оригинальному

    - - - Добавлено - - -

    Поправил генерацию исходника. Теперь нужно только добавить ссылку на файл макросов.

    Из занимательного - если где-то ссылка ведёт не туда, куда надо - есть шанс, что после сборки новый бинарник с исходным бинарником не совпадёт Особенность страничныз ПЗУ

    Немного потыкал кнопсы - результат идентичен оригинальному
    Последний раз редактировалось Hunta; 29.03.2025 в 16:17.

  4. #243

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тэкс, красоту показываемого и генерируемго поправил. Может где ещё вылезет - по возникновению буду исправлять.

    Начал тыкать кнопсы. Поправил определения макросов (к доработке под секции никаким боком). Потыкал и налетел на очередную ошибку. Лечу В смысле исправляю, а не в полёте
    Последний раз редактировалось Hunta; 30.03.2025 в 12:37.

  5. #244

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чистка ошибок (точнее - неучтённых сценариев) продолжается. Пара ошибок генерации и штуки четыре макросов от прошлого подхода пришлось поправить, ибо - не так оно сейчас Похоже, скоро будет очередной коммит

  6. #245

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Начал подтягивать оставшуюся часть ПЗУ. Там, по крайне мере вначале, идёт код, который используется для тестирования и для начала переносится в ОЗУ. И процесс переноса не совсем пока понятен. Такое впечатление, что вначале переносится часть кода, потом управление передаётся ей, а она ещё докопирует. Но надо разобраться в логике. Часть кода, которая переносится в ОЗУ - отображена как секция в DisAsm и по крайне мере можно анализировать код. Ну и теперь проверка на совпадения с исходым бинарником тривиальна - генерирую новый исходник, собираю, сравниваю.

  7. #246

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Помимо доработок по работе со секционированными (язык не поворачивается сказать - страничными - ибо в этом ПЗУ большая их часть разного размера и большая же их часть грузится в ОЗУ для работы) ПЗУ - "распилил" таки его на составные части. Созданный (без дизасма) исходник генерирует идентичный двоичный файл.

    Теперь опять доработка работы с секциями - ибо там СТРАШНОЕ в плане ссылок...

    - - - Добавлено - - -

    Свободного времени, как обычно, катастрофически мало, но с 14-ого в отпуске на две недели - попробую добить и ПЗУ и функционал

  8. #247

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотрев на (промежуточный) результат и подумав, понял, что ошибался. Страницы всё таки есть То есть Физическая структура (страницы, одного размера, отображаются через "окно") и Логическая структура. И всё ссылки через "номер секции" - они на самом деле ссылки через номер страницы. Но в некоторых случая вылезают и секции. Работаю дальше

  9. #248

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Физическая структура добавлена и "вписана" в модель структуры DisAsm-11 до варианта, когда на выходе получается уже более-менее вменяемый файл, который транслируется, собирается и проходит сравнение с исходником. Безусловно, какие-то ошибки в логике ещё возможны, что будет выявляться тестированием.

    На очереди - работа с (логическими) секциями, которые копируются в ОЗУ и являются взаимосвязанными - то есть из одной секции возможно обращение к коду или данным другой.

    Шаг первый - организовать взаимосвязь, шаг второй - генерация ссылок.
    Последний раз редактировалось Hunta; 18.04.2025 в 10:36.

  10. #249

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока чистка от ошибок непредусмотренных сценриев и неправильных предположений. А так же пару мест зачистил со странным кодом - могу только предположить - остатки от кода для старой структуры объектов дизасма..

  11. #250

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Взаимосвязанные секции пока не даются - не могу придумать простой способ описания связи их как объектов в DisAsm. То есть в принципе способы есть, но все получаются или громоздкие или потребуют много кода или переделок. Не хотелось бы...

    Пока укладывается в голове, решил проверить - а как (после переделок) с другими типами файлов - много ли сломалось Взял (наверное самый тяжеловесный и не до конца доделанный) образ RSX-11M-Plus. Как ни странно, но додедалать и переделать пришлось немного. Но - есть ошибки в генерации кода (по сравнению с предыдущим вариантом). Фиксю..

Страница 25 из 31 ПерваяПервая ... 212223242526272829 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Disasm with Sts 7.5...
    от Stl75 в разделе Софт
    Ответов: 3
    Последнее: 25.06.2018, 11:28

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •