Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 33

Тема: Новый дизассемблер для ZX

  1. #1
    Member Аватар для Strunov
    Регистрация
    19.08.2005
    Адрес
    Харьков
    Сообщений
    111
    Благодарностей: 5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Новый дизассемблер для ZX

    Есть программа дизассемблер. Каким образом организовать скролл вверх. Точнее как определить количество байт в команде идущей сверху??
    Последний раз редактировалось Strunov; 08.05.2007 в 12:49.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Member Аватар для valker
    Регистрация
    27.01.2005
    Адрес
    С.-Петербург
    Сообщений
    92
    Благодарностей: 6
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Strunov
    Есть программа дизассемблер. Каким образом организовать скролл вверх. Точнее как определить количество байт в команде идущей сверху??
    Imho: никак.

  4. #3
    CraZZZy CodEr Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    1,553
    Благодарностей: 740
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valker
    Imho: никак.
    Да не, как-то можно. Надо проверить назад байт этак, например, 10 - предыдущий байт проверить на 1-байтную команду, перед ним - на 2-байтную, ещё перед ним - на 3-байтную. Последняя совпавшая и будет предыдущей командой.
    Все любят гипножабу

  5. #4
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #5
    Member Аватар для valker
    Регистрация
    27.01.2005
    Адрес
    С.-Петербург
    Сообщений
    92
    Благодарностей: 6
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #6
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 706
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    максимальная длинна команды в z80 4 байта
    вот от этого и считай -

    тест -4 = 4 байтная команда?
    если нет то тест -3 = 3 байтная команда?

    и тд
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  8. #7
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri
    максимальная длинна команды в z80 4 байта
    Не-а...
    Не забывай про дублирование/чередование префиксов индексных регистров

  9. #8
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 706
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    dd fd dd fd ты про эти? они стекуются и учитывается только последний

    а если dd cb или dd ed то там все равно команды в сумме 4 байта
    я трассировщик писал у меня не было команд длинее 4 байт

    ну или назови такую команду
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  10. #9
    Activist Аватар для Jukov
    Регистрация
    03.12.2005
    Адрес
    Серов
    Сообщений
    471
    Благодарностей: 65
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Strunov
    Есть программа дизассемблер. Каким образом организовать скролл вверх. Точнее как определить количество байт в команде идущей сверху??
    С какой целью интересуешься, если не секрет?
    Кворум-192, Кворум-128 CP/M, Кворум-64, ZS-Scorpion 256 Turbo+&Caro ZX_MC, Мастер48К

  11. #10
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri
    dd fd dd fd ты про эти? они стекуются и учитывается только последний

    а если dd cb или dd ed то там все равно команды в сумме 4 байта
    я трассировщик писал у меня не было команд длинее 4 байт

    ну или назови такую команду
    Именно про это. Стыкуются, учитывается последний, но все равно длина команды состоит из суммы ВСЕХ префиксов. И только в таких случаях, во всех остальных как раз 4 байта..

Страница 1 из 4 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. новый сайт
    от alone в разделе События
    Ответов: 8
    Последнее: 23.10.2006, 08:32
  2. Дизассемблер TR-DOS
    от Sonic в разделе Оси
    Ответов: 5
    Последнее: 23.10.2006, 07:42
  3. Новый софт
    от Vitamin в разделе Софт
    Ответов: 0
    Последнее: 25.01.2005, 00:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •