Дизассемблер хочу написать..Цитата:
Сообщение от Jukov
Вид для печати
Дизассемблер хочу написать..Цитата:
Сообщение от Jukov
проверять назад только 4 байта - это мало. Пример...
ld de,#FD00
ld hl,#FFFF
(x)
если проверять назад от точки (х) - на 4 байта назад будет LD IY,#FFFF
ИМХО, дизасм с отступом назад байт в 16 - самое то.
в общем случае нельзя. например, данные перед курсором 21 21 21 3E FF
можно дизасмить как
или какКод:some_byte db 21
my_procedure ld hl,#3E21
rst #38
cursor:
зависит от того, будет ли когда-либо передано управление первому байту в цепочке или второмуКод:my_procedure ld hl,#2121
ld a,#FF
cursor:
Кстати о птичках. Есть ли хоть один дизасм, который корректно декодирует команды калькулятора?
А кто сказал что STS дизассемблер? Это очень хороший отладчик, но с предельно примитивной функцией дизасма. Если есть желание понять что такое настоящий дизасм, то посмотрите например на ZXD (был в приложении к ZX-Power, кажется #2). Еще лучше IDA Pro, но он увы PC-шный.
А вообще идею с дизассемблером поддерживаю обеими руками. Будет желание активно заняться написанием такого есть куча идей, ибо сам пытался сделать такое. В частности дизасм мог бы иметь таблицу стандартных точек (#5800, #5B00, #C000, #3D13, #3D2F и др.) по которым в 99% можно определить правильно ли установлен PC (ProgrammCounter) для процедур. Кроме того можно отсеивать явные массивы данных (это когда коды команд изменяются по инкрименту или когда присутстует большые участки команд LD *,*).
а кстати я не знаю как сделано в сервис мониторе на Скорпе
но помню одну ситуацию
когда я никак не мог сделать шаг на одну команду назад
он дисасемблил неправильно и упорно возвращал н ту ячейку что уже была
Когда выдаеш листинг строиш таблицу адресов инструкций. При движении за листинг вверх
1 - отступаеш на 4-е байта
2 - дизассемблиш инструкцию
3 - проверяеш адрес за инструкцией с адресом в вершине таблицы
4 - совпало - ок, нет отступаеш на 3 ( 2, 1 ) и п2.
В Засм мониторе я так делал. Впрочем я же тебе исходники послал.
Получил?
Добавлено через 3 минуты
Vitamin, Mon2
Вот еще проблема... НУжны подпрограммы работы с диском для того же самого дизасма... Понятные и простые. Загрузка каталога, создание таблицы файлов для селектора, загрузка и т.д. Вообще мой малый опыт программирования на асме показывает, что 80% времени уходит на создание интерфейса...., а времени мало... Чтобы не прослыть болтуном прилагаю скриншоты и один Снэпшот.
P.S. Пробел не жмите... там ret в асм... Висяк..
P.P.S Выход в меню Q. Там правда кроме поиска меток и HELP-a ничего не работает пока....