Проработка концепции меток
- - - Добавлено - - -
Теперь метки в середине строк расставляются более правильно
- - - Добавлено - - -
Продолжаем воевать с метками
Проработка концепции меток
- - - Добавлено - - -
Теперь метки в середине строк расставляются более правильно
- - - Добавлено - - -
Продолжаем воевать с метками
Декодирование дошло до точки, когда уже можно сохранять в файл (кнопка Сохранить теперь работает) и проверять правильность обратного ассемблирования, сборки и сравнения с оригиналом Сохранение в файл позволило увидеть две достаточно грубые ошибки декодирования операндов в определённых режимах адресации - поправил.
Теперь буду выкладывать то, что получается при сохранении в файл на очередной доделке программы
327
- - - Добавлено - - -
325
- - - Добавлено - - -
256
- - - Добавлено - - -
125
- - - Добавлено - - -
86
- - - Добавлено - - -
64
- - - Добавлено - - -
18
- - - Добавлено - - -
15
К сожалению, эти 15 ошибок - ошибки класса Z, то есть инструкции, про которые MACRO-11 предупреждает, что они могу выполняться по разному на разных моделях PDP-11 - то есть это и не ошибки, а больше предупреждения...
Итак, код полученный из дизасма после добавления нескольких строк вначалеКод:.MACR ZKDJV2 Z 1449 004540 000120 JMP (R0)+ Z 1461 004562 000121 JMP (R1)+ Z 1469 004576 000122 JMP (R2)+ Z 1492 004652 000123 JMP (R3)+ Z 1500 004666 000124 JMP (R4)+ Z 1508 004704 000125 JMP (R5)+ Z 1527 004742 000126 JMP (SP)+ Z 1539 004766 000127 001127 JMP #1127 Z 2997 011626 000121 JMP (R1)+ Z 3227 012470 000127 000401 JMP #401 Z 3355 013046 004421 JSR R4, (R1)+ Z 3524 013532 004427 000240 JSR R4, #240 Z 6120 023704 030252 BIT R2, @-(R2) Z 7302 027676 010222 MOV R2, (R2)+ Z 9332 037242 020252 CMP R2, @-(R2) ?MACRO-E-Errors detected: 15 DK:ZKDJV2=DK:ZKDJV2 .
и в концеКод:.TITLE TEST .NLIST .INCLUDE /KXX:ASCII.MAC/ .INCLUDE /KXX:HWDF.MAC/ .LIST .ASECT .=0
прошёл трансляцию MACRO-11, ну наверное можно считать - без ошибок с точки зрения MACRO-11 С точки зрения MACRO-11 - потому как есть предполагаемые метки, которых нет на их местах... О причинах догадываюсь, попробую поправить. Да, и надо поставить .DSABL GBL, так как это - всё таки ошибки - пусть и MACRO-11 так считаетКод:.END
- - - Добавлено - - -
Так что...
48
- - - Добавлено - - -
26
- - - Добавлено - - -
21
- - - Добавлено - - -
Ха, а это выползла другая ошибка, команда PDP-11, про которую забыл
- - - Добавлено - - -
Ну, правда, и предыдущая - в паре мест...
- - - Добавлено - - -
17
Последний раз редактировалось Hunta; 02.03.2021 в 18:18.
15
Исходник
Листинг
В исходнике есть несколько .ASCII/.ASCIZ блоков - они были описаны хардкодом в программе исключительно для отладки парсера .ASCII - пока функционала автоматического определения или ручного указания типа данных нет. Добавлю ручное, когда нарисую парсер для слов, байт и Radix50 Автоматическое - пока цель на будущее
- - - Добавлено - - -
Следующий шаг - добавлю загрузку простых .SAV файлов и образов памяти типа загрузчиков, содержимое ПЗУ - на них можно будет проверить не только ассемблирование, но результат линковки
- - - Добавлено - - -
Закомментировал хардкод блоков .ASCII/.ASCIZ - теперь ошибок 17, но все они Z
Добавил загрузку двоичных файлов-образов. Первым под раздачу попал загрузочный сектор для RK от операционки DOS/Batch-11
Переделал подход к декодирование – стал немного более интеллектульным
Плюс, немного пошаманил над генерацией меток.
Результат (подход пока единый – загрузить нечто в дизассемблер и выгрузить в файл)
Исходник
MACRO-11 не выдал ни одной ошибки
Листинг
Позже гляну – что он сделает с .BIC файла теста
интересно было бы реассемблировать ПЗУ от Т-11 или ПЗУ от ДВК, что бы получить исходник OTD.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Игрался с программой. Много думал. Немного кодил
Сделал нулевую версию анализатора (отслеживает ссылки из команд и ставит об этом метку на ячейках). Запуск можно сделать как с точки старта - при загрузке (если в файле есть такая инфа) или при ручном указании точки старта. Или запустить с текущего адреса.
И совсем отказался от подхода - тупо пробуем дизасмить всё подряд
Начал добавлять функционал ручных подсказок.
Теперь через интерфейс одним щелчком мыши (клавиатурные шоткаты грядут)
как собрать строку
так и распилить её в нужном месте
Причём последнее может сделать и анализатор, если обнаружится ссылку внутрь строки. Всё, что для этого ему нужно - поставить флаг - на ячейку есть ссылка. Распил строки и расстановка меток будут сделаны автоматически
Некоторое время - на игры, исправление ошибок, доработку интерфейса и общения с программой, а потом сделаю сохранения текущего состояния процесса дизасма. Пока играюсь и отлаживаюсь на двух файлах, но ещё чуть чуть и программу уже можно будет использовать по назначению. И тогда без возможности прерваться с сохранение игрушки - будет тяжело
Доработанный пользовательский интерфейс
Гоняю третьего подопытного кролика. Цели – большее удобство использования, некоторые ковыряния с ASCII, некоторые ковыряния с метками, исправление ошибок
- - - Добавлено - - -
199
- - - Добавлено - - -
119
практически все - неопределённые метки Но есть и прикольные Где то я при декодировании команды забыл число вывести в восьмеричном виде и оно выплёвывается в десятичном. И всё бы ничего, но вот 8 и 9 MACRO-11 не нравятся Странно
- - - Добавлено - - -
В целом, всё ближе к проверке века - дизассмеблировать-ассемблировать-слинковать-сравнить с оригиналом
- - - Добавлено - - -
Первая версия программы, в которой я поправил косяк декодирования (данные были декодированы как код), сгенерил новый выходной файл и получил...
107
ошибок До этого момента я выходил из программы, правил её текст, запускал заново, повторял процедуру уточнения типов ячеек (в основном выделял строки, формировал указатели на данные и подпрограммы, подсказывал, что это данные, а это код) и заново генерил выходной файл
В целом программа всё ближе для боевого применения
Последний раз редактировалось Hunta; 08.03.2021 в 22:45.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)