Дизассемблер хочу написать..Сообщение от 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 *,*).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
а кстати я не знаю как сделано в сервис мониторе на Скорпе
но помню одну ситуацию
когда я никак не мог сделать шаг на одну команду назад
он дисасемблил неправильно и упорно возвращал н ту ячейку что уже была
С уважением,
Jerri / Red Triangle.
Когда выдаеш листинг строиш таблицу адресов инструкций. При движении за листинг вверх
1 - отступаеш на 4-е байта
2 - дизассемблиш инструкцию
3 - проверяеш адрес за инструкцией с адресом в вершине таблицы
4 - совпало - ок, нет отступаеш на 3 ( 2, 1 ) и п2.
В Засм мониторе я так делал. Впрочем я же тебе исходники послал.
Получил?
Добавлено через 3 минуты
Vitamin, Mon2
Последний раз редактировалось Rubts0FF; 11.03.2007 в 06:19. Причина: Добавлено сообщение
Вот еще проблема... НУжны подпрограммы работы с диском для того же самого дизасма... Понятные и простые. Загрузка каталога, создание таблицы файлов для селектора, загрузка и т.д. Вообще мой малый опыт программирования на асме показывает, что 80% времени уходит на создание интерфейса...., а времени мало... Чтобы не прослыть болтуном прилагаю скриншоты и один Снэпшот.
P.S. Пробел не жмите... там ret в асм... Висяк..
P.P.S Выход в меню Q. Там правда кроме поиска меток и HELP-a ничего не работает пока....
Последний раз редактировалось Strunov; 10.05.2007 в 11:07.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)