-
Я, конечно, понимаю, что тут мало кому нужен (ещё один) дизассмеблер, тем не менее, он уже подходит к состоянию, когда я могу выложить-дать его погонять, если у кого-то появиться интерес :) Но не настаиваю - делается он в первую и основную очередь под и для меня :)
-
Я полагаю, что новый дизасемблер будет интересен. Пусть не сильно многим. Но люди интересующиеся найдутся. Тем боле версия его будет более продвинутой с учётом недостатков существующих.
-
Поживём - увидим, но написал я его в первую очередь для себя, так как те, которые я видел - меня в той или иной степени не устраивали.
Включая IDA.
Которую тоже надо допиливать, а вот это делать (учитывая, КАК это там делается) у меня нет желания.
-
Отвлёкся немного от ДизАсм-а на ВАКСу - ну да, как долго с чём то вожусь - аки в печёнках. Но про него не забывал :)
Отказался (по крайне мере пока) от автоматического определения ячеек-векторов (куча программ, особенно тестовых, у которых там хрен знает что), реализовал вместо этого ручную подсказку. Сделал адекватным отрисовку последствий команд Вектор и Сброс (формата ячейки). Поскольку теперь идёт отслеживание ссылок, так же добавил автоматическую перерисовку ссылающихся ячеек при смене формата ссылочной ячейки. Ну и пофиксил некоторое количество ошибок. С ужасом продолжаю смотреть на команду ASCIZ :) Но потихоньку буду допиливать и её :)
-
Война с ASCII и ASCIZ. Ну и до кучи - с .EVEN :) Вроде что то (ТТТ) получается :)
-
Добавил поддержку битовой карты в .SAV файлах. Результат (DESS был загружен в DisAsm и сразу без моих действий сгенерирован .MAC, который оттранслирован и собран)
До поддержки
Код:
.@DESS
.MACRO/LIST:DESS DESS
.LINK/STACK:1000 DESS
.DIFF/BIN DESS.SAV DESS.SRC
BINCOM comparing/ DK:DESS.SAV -- DK:DESS.SRC
000000 362/ 000300 000200 000100
?BINCOM-W-Files are different
.
После добавления поддержки
Код:
.@DESS
.MACRO/LIST:DESS DESS
.LINK/STACK:1000 DESS
.DIFF/BIN DESS.SAV DESS.SRC
?BINCOM-I-No differences found
.
-
STALK оказалась полезной в плане доработки DisAsm-11.
Во-первых, добавил поддержку КОИ-8 в генерацию ASCII - технически - вообще минут на 5 работы, но под рукой не было файла, в котором был русский КОИ-8 - и вот - попался :)
Во-вторых, добавил автоматическую резку длинных .ASCII строк. Мне как бы вообще фиолетово, какой там длины .ASCII получился, но вот MACRO-11 на больше 132 символов в строке воротит нос - не комильфо, видите ли ему :)
В-третьих, найдены и пофиксины очередные ошибки :)
Ну и повозившись с получающимся .MAC понял - надо доводить результат работы до состояния, когда можно без правки результата дизасм нулевого блока (там, где служебка) пихать результат на вход MACRO и LINK (в том числе, без указания опции /STACK:1000, когда начальное значение стека совпадает с умолчанием) и получать идентичный исходному результат :)
Вариант с автоматической резкой длинных строк лежит там же - http://www.kpxx.ru/Soft/Utils/Stalk
-
Код:
.=^O<400>
.ASCII |Внимание !!! Программа выводит текстовые сообщения в коде КОИ-8, поэтому вы должны иметь драйвер, |
.ASCIZ |обслуживающий терминал в КОИ-8. (например, мой TS.SYS для УКНЦ). Олег Ховайко, (UB5AJV). |
.=^O<722>
.ASCIZ <ESC>|H|<ESC>|J*BASED ON '|<RUS>|PIKNIK NA OBO^INE|<LAT>|'* |
.PSECT
M01000:
MACRO/LIST:STALK STALK
LINK/STACK STALK
Всё. От .ASECT (если только программа не хранит что то в нулевом блоке) избавился. Так же как и от /STACK:1000, если используется стандартный стек :)
- - - Добавлено - - -
DESS тоже проходит тест на идентичность - генерация исходника сразу после загрузки в DisAsm - без вмешательства и /STACK:1000
- - - Добавлено - - -
Stalk тест Моментальная идентичность - пока не проходит - немного неправильно генерируется код - аргумент команды воспринимается как команда и происходит своеобразное наложение (днём посмотрю - в чем причина). Но если эту ошибку поправить - тест проходит
-
С Digger налетел на проблему, которая не даёт сделать .SAV, идентичный исходному. Суть проблема - хвост файла (там одни нули) был срезан, но служебная информация, в частности - битовая карта - не тронута. То есть я могу сделать так, что бы новый .SAV был идентичного размера и почти идентичного (кроме битовый карты) содержимого или я могу сделать так, что бы всё содержимое было идентичным, но новый .SAV будет большего размера - с нулями в "лишнем" хвосте. Остановился на втором варианте - так как в его случае этот "нулевой" хвост можно срезать, не трогая оставшуюся часть
Итого - три программы, проходящие (с учётом вышесказанного) тест Моментальная Идентичность :)
- - - Добавлено - - -
Гы :) Это я и срезал :) Проанализировав содержимое :) Но не вспомнив про битовую карту :) Ну значит теперь я и это могу поправить :)
- - - Добавлено - - -
Ну вот, после правки битовой карты и топ-адреса исходного .SAV на правильные значение - Digger так же проходит тест Моментальная идентичность :)
-
Благодаря двум новым подопытным кроликам
- исправил неточность генерации двух- и трёх- словных команды, когда на второе или третье слово есть внешняя ссылка
- расширил правила генерации .MAC из .SAV
- понял (но ещё не реализовал), что надо добавлять в программу работу из командной строки. Что то типа DisAsm /SAV DAY.SAV /GEN. Это позволить сделать автоматическое тестирование - даже на пяти .SAV уже тяжеловато всё делать руками :)
Подопытные кролики - DAY.SAV, DESS.SAV, DIG.SAV, HAND.SAV и STALK.SAV - все проходят тест Моментальная идентичность :)