![]() |
Новый дизассемблер для ZX
Есть программа дизассемблер. Каким образом организовать скролл вверх. Точнее как определить количество байт в команде идущей сверху??
|
Quote:
|
Quote:
|
Простейший способ- шагнуть назад на некоторое количество байт (~4) и попробовать дизассемблировать (сиречь определить длину команды). Если между концом этой дизассемблированной команды и началом текущей строки нет промежутка, то считаем, что получили адрес. Иначе- пытаемся дизассемблировать на байт дальше.
Но этот способ неточный (имхо используется в STS). Самый точный способ состоит в дизассемблировании нескольких команд назад. Также шагаем назад на некоторое число байт (~16) и пытаемся дизассемблить несколько команд пока не достигнем исходной (без перехлестов и пропусков). Иначе- шагаем вперед на байт. Такое юзается в US. Если программа немодифицируется (в ПЗУ лежит или еще что) и дизасм на мощной машине делается, то можно просто составить битовую карту команд и просто бегать по ней. |
Quote:
|
максимальная длинна команды в z80 4 байта
вот от этого и считай - тест -4 = 4 байтная команда? если нет то тест -3 = 3 байтная команда? и тд |
Quote:
Не забывай про дублирование/чередование префиксов индексных регистров |
dd fd dd fd ты про эти? они стекуются и учитывается только последний
а если dd cb или dd ed то там все равно команды в сумме 4 байта я трассировщик писал у меня не было команд длинее 4 байт ну или назови такую команду :) |
Quote:
|
Quote:
|
| All times are GMT +4. The time now is 14:30. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.