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

User Tag List

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

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

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

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

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

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

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

    По умолчанию

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

  4. #3
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,054
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    217
    Поблагодарили
    91 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #4
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #5
    Member
    Регистрация
    27.01.2005
    Адрес
    С.-Петербург
    Сообщений
    93
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    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
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    и тд
    С уважением,
    Jerri / Red Triangle.

  8. #7
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #8
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    ну или назови такую команду
    С уважением,
    Jerri / Red Triangle.

  10. #9
    Activist Аватар для Jukov
    Регистрация
    03.12.2005
    Адрес
    Серов
    Сообщений
    491
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    38
    Поблагодарили
    13 сообщений
    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,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 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, 10:32
  2. Дизассемблер TR-DOS
    от Sonic в разделе Оси
    Ответов: 5
    Последнее: 23.10.2006, 09:42
  3. Новый софт
    от Vitamin в разделе Софт
    Ответов: 0
    Последнее: 25.01.2005, 00:35

Ваши права

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