создание темы предполагает обсуждение, а такой поток сознания уместен скорее для `дневника` и такой формат есть на этом форуме
создание темы предполагает обсуждение, а такой поток сознания уместен скорее для `дневника` и такой формат есть на этом форуме
svinka (07.03.2021)
4 ошибки SOB и одна ещё связанная с парсингом строк, с ней ещё подумать надо...
- - - Добавлено - - -
Ноль.
После небольшого редактирования (сейчас .SAV файлы берутся как простые образы памяти, поэтому надо было вырезать нулевой блок, поправить ссылку на ячейку 44 - по имени JSW, подрезать конец - из .WORD 0 в .BLKW и для link-а указать /STACK) - компиляция + сборка на выходе дают идентичный исходному .SAV файл
Если есть желающие покопаться в дизасме DESS V05.10s, то исходники здесь
Небольшое уточнение - DESS.TXT надо переименовать в DESS.COM.
Некоторая переделка внутренностей (снаружи всё практически то же самое) с прицелом на увеличение функционала подсказок.
Сгенерировал новый DESS.MAC. Обнаружил пересечение между описанием констант ASCII (символ с кодом 32(8)) и командой SUB. Поэтому выложен и обновлённый ASCII.MAC. Всё лежит там же
Добавил функционал подсказок на аргументы команд. Теперь можно сделать не MOV 1000(R2), R1, а MOV L01000(R2), R1 Функционал доступен как человеку, так и анализатору. Но в нём ещё надо придумать, как это задействовать, так что использует только человек...
Некоторая косячность наблюдается с метками в ASCII строках. Не критическая, на DESS пришлось поправить две метки, но всё равно, надо продумать другую схему работы со ссылками.
Начал делать модуль разборки с метаинформацией в .SAV файлах, теперь программа (кое-что) знает про .SAV файлы, а не смотрит на них как на образы памяти.
Опять обновлённая версия DESS.MAC и слегка поправленный ASCII.MAC. Хотя над этой правкой ещё думаю.. Всё лежит там же
- - - Добавлено - - -
А, да, всё забываю написать Время изготовления этого файла (от начала до прохождения теста идентичности) - примерно 30 минут Раньше на такое у меня ушло бы дней пять С этим файлом уже можно начинать отрабатывать логику программы. Хотя я её уже в процессе дизассембла начал видеть
Последствия игр с программой
Встаешь на ячейку, видишь в среднем окне - а куда, возможно, её содержимое указывает...
О, да это код - щелчок по кнопке S - и в среднем окне уже видишь код
Если это команда с двумя аргументами, соответственно среднее окно для источника, правое - приёмника Если, конечно, потенциально это указатели
Пока ещё альфа-заготовка - то есть много для чего показа в правых окнах не будет, но...
Вечерами ломал голову над внутренними переделками программы с прицелом на поддержку файлов программ с перекрытиями. Вроде как идеи обкатал в голове и вчера вечером закончил переделку - до реальной поддержки пока ещё далеко, но первый шаг сделан. После переделки было на удивление мало сбоев в работе - была пара месте, где не была сделана необходимая правка и с пяток правок, связанных с генерацией меток.
А потом, развлекаясь в дизассемблирование DESS-а, налетел на некорректную визуализацию ячеек с данными.
Вообще, (правильная) визуализация данных - с учётом того, что разные типы данных занимают разное количество слов, а то и байт, плюс к этому добавляется необходимость (правильной) генерации меток, в том числе байтовых - по ощущениям - одного порядка сложности с дизассемблированием команд. Но в командах сложное место фактически одно - понять - операнд - это число или адрес, да и то - есть некоторые подсказки.
Немножко пошаманил, теперь визуализация идёт более корректно.
Исходная картинка
По адресу 11631 видим наличие строки, но младший байт - это терминатор предыдущей строки, а наша начинается на старшем байте. В предыдущей версии программы, если бы на этой ячейке выдал команду ASCIZ, то получил бы по адресу 11630 то же самое (.WORD 006400), потом много пустых строк (ибо символы ушли бы в .ASCIZ, которая начинается с 11631, но там - неправильная визуализация) и .WORD 0 по адресу 11662.
Теперь визуализация более корректная
Похожая проблема с визуализацией ячеек, старший байт которых помечен как БАЙТ данных, а младший ни как не помечен
Снова более корректная визуализация
А вот визуализация ячейки, оба байта которой помечены как БАЙТЫ
Всё это привело к мысли, что надо бы подсвечивать пометки на словах и байтах, но для этого надо отказываться от простого текста в выводе окон результатов дизассемблирования, с чем пока не хочется связываться, гораздо проще сделать что то типа статусной строки, в которой будет выводится эта информация.
Последний раз редактировалось Hunta; 13.08.2022 в 14:20.
Уф... ссылки теперь не только добавляются (метки появляются), но и удаляются (метка исчезает, если больше никто на ячейку не ссылается). По крайне мере все пришедшие мне сценарии проверил и добавил код.. Ещё добавить сохранение-восстановление состояния дизассемблирования - и версия 1.0 будет готова Возможно, так же в неё добавлю дизассемблирование простых .TSK файлов - формат у них с .SAV сильно похожий и надо бы добавить поддержку простых, а не сдампленных из XXDP .LDA файлов (есть там один нюансик, но формат тоже почти одинаков). Ещё сделал некоторые команды триггерными (типа - щёлкнул один раз - и вот указатель, щёлкнул второй раз - и снова простая ячейка)
Допиливание будет долгим (ибо даже не сильно сложных в реализации задумок – много), но…
Минимально необходимый функционал (плюс реализованные задумки) – Е!
Ошибки (точнее, недоделки из-за изменения внутренностей) ещё есть - гоняю тесты и выпиливаю их
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)