ZXNet эхоконференция «code.zx»


тема: Требуется помощь Гуру..



от: Alexandr Sinyakov
кому: All
дата: 26 Feb 2007
Hello, valker val> Imho; никак.; Да не, как-то можно. Hадо проверить назад байт этак, например, 10 - предыдущий байт проверить на 1-байтную команду, перед ним - на 2-байтную, ещё перед ним - на 3-байтную. Последняя совпавшая и будет предыдущей командой.

от: Yuri Potapov
кому: All
дата: 26 Feb 2007
Hello, valker максимальная длинна команды в z80 4 байта вот от этого и считай - тест -4 = 4 байтная команда? если нет то тест -3 = 3 байтная команда? и тд

от: valker
кому: All
дата: 26 Feb 2007
Hello, Strunov Str> Есть программа дизассемблер. Каким образом организовать скролл вверх. Str> Точнее как определить количество байт в команде идущей сверху?? Imho; никак.;

от: valker
кому: All
дата: 26 Feb 2007
Hello, valker val> Imho; никак.; Уточню, в общем случае - никак. Шагаем на 1 байт назад - там команда - но не факт, что это именно она (возможно часть данных), шагаем на 2 байта назад - там команда с 1 байтным параметром (или 2-х байтовая команда), шагаем на 3 байта назад - там команда с 2 байтным параметром или 3-х байтовая команда. Автоматически решить какая же из 3-х правильная без анализа хода выполнения программы невозможно. Анализ может быть затруднён (например переходами по вычисляемым адресам, когда данные для вычислений становятся известны только на этапе работы программы).

от: Виталий Гаврилов
кому: All
дата: 26 Feb 2007
Hello, valker Простейший способ- шагнуть назад на некоторое количество байт (~4) и попробовать дизассемблировать (сиречь определить длину команды). Если между концом этой дизассемблированной команды и началом текущей строки нет промежутка, то считаем, что получили адрес. Иначе- пытаемся дизассемблировать на байт дальше. Hо этот способ неточный (имхо используется в STS). Самый точный способ состоит в дизассемблировании нескольких команд назад. Также шагаем назад на некоторое число байт (~16) и пытаемся дизассемблить несколько команд пока не достигнем исходной (без перехлестов и пропусков). Иначе- шагаем вперед на байт. Такое юзается в US. Если программа немодифицируется (в ПЗУ лежит или еще что) и дизасм на мощной машине делается, то можно просто составить битовую карту команд и просто бегать по ней.

от: Вячеслав Струнов
кому: All
дата: 26 Feb 2007
Hello, All Есть программа дизассемблер. Каким образом организовать скролл вверх. Точнее как определить количество байт в команде идущей сверху??

от: Виталий Гаврилов
кому: All
дата: 26 Feb 2007
Hello, jerri jer> максимальная длинна команды в z80 4 байта Hе-а... Hе забывай про дублирование/чередование префиксов индексных регистров

от: Yuri Potapov
кому: All
дата: 27 Feb 2007
Hello, Vitamin dd fd dd fd ты про эти? они стекуются и учитывается только последний а если dd cb или dd ed то там все равно команды в сумме 4 байта я трассировщик писал у меня не было команд длинее 4 байт ну или назови такую команду :)

от: Alexandr Sinyakov
кому: All
дата: 27 Feb 2007
Hello, Strunov проверять назад только 4 байта - это мало. Пример... ld de,#FD00 ld hl,#FFFF (x) если проверять назад от точки (х) - на 4 байта назад будет LD IY,#FFFF ИМХО, дизасм с отступом назад байт в 16 - самое то.

от: SMT
кому: All
дата: 27 Feb 2007
Hello, Strunov в общем случае нельзя. например, данные перед курсором 21 21 21 3E FF можно дизасмить как ┌─- code ─── some_byte db 21 my_procedure ld hl,#3E21 rst #38 cursor; └──; code ─── или как ┌─- code ─── my_procedure ld hl,#2121 ld a,#FF cursor; └──; code ─── зависит от того, будет ли когда-либо передано управление первому байту в цепочке или второму

от: Виталий Гаврилов
кому: All
дата: 27 Feb 2007
Hello, SMT Кстати о птичках. Есть ли хоть один дизасм, который корректно декодирует команды калькулятора?

от: Виталий Гаврилов
кому: All
дата: 27 Feb 2007
Hello, jerri jer> dd fd dd fd ты про эти? они стекуются и учитывается только последний jer> jer> а если dd cb или dd ed то там все равно команды в сумме 4 байта jer> я трассировщик писал у меня не было команд длинее 4 байт jer> jer> ну или назови такую команду Именно про это. Стыкуются, учитывается последний, но все равно длина команды состоит из суммы ВСЕХ префиксов. И только в таких случаях, во всех остальных как раз 4 байта..

от: Вячеслав Струнов
кому: All
дата: 27 Feb 2007
Hello, Jukov Juk> С какой целью интересуешься, если не секрет? Дизассемблер хочу написать..

от: Константин Жуков
кому: All
дата: 27 Feb 2007
Hello, Strunov Str> Есть программа дизассемблер. Каким образом организовать скролл вверх. Str> Точнее как определить количество байт в команде идущей сверху?? С какой целью интересуешься, если не секрет?




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
COMPUTER WORLDS - Компьютерная новелла по игре PRINCE of PERSIA.
Объявления - Реклама и объявления...
Разное - Эпопея: Днeвник разрабoтки oднoй прoграммы.
Будущее Спектрума - Размышления об игровой приставке ZX-Box на основе Spectrum'а.
Нaшe мнeниe - пoзaди всякиe Мillennium'ы, oтчeты, рeпoртaжи. Кaкиe вывoды мoжнo из всeгo этoгo сдeлaть?

В этот день...   8 мая