Автор Тема: Ребенок изучает asm [SMD]  (Прочитано 3934 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #60 : 07 Февраль 2024, 14:54:43 »
DrMefistO, у меня вопрос, как обратно добавить ром в проект? Изначально при открытии проекта Генс знает какой ром запускать. Но потом по какой-то причине это сломалось. И теперь надо каждый раз при открытии проекта открывать нужный ром через генс.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #61 : 07 Февраль 2024, 16:52:42 »
DrMefistO, у меня вопрос, как обратно добавить ром в проект? Изначально при открытии проекта Генс знает какой ром запускать. Но потом по какой-то причине это сломалось. И теперь надо каждый раз при открытии проекта открывать нужный ром через генс.
В smd_ida_tools2 как сам Gens, так и ром в нём нужно выбирать вручную, т.к. сейчас gens не собирается в один файл с плагином для иды.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #62 : 13 Февраль 2024, 08:37:22 »
тут в процессе запиливания очередного шедевра у меня возникли некоторые затруднения... как бы нормальная программа состоит из блоков. типа тут функция такая, тут сякая и все они взаимосвязаны между собой. почему с ромами на сегу это не работает? то есть зная адрес начальной функции Reset - заходим по этому адресу, читаем код, и если там есть ссылки на другие участки рома с кодом - прыгаем туда тоже и читаем. но чото у меня таким образом находит не все. хотелось бы понять почему :) ведь если прямой связи между участками кода нет, то как при сборе рома эти участки в ром попадают? на ум приходит только одна мысль, что типа возможно что основной код крутится на 68к и, скажем, частично какой-то код отправляется в Z80, там работает и предположим должен вернутся в 68к в другое место. тогда я еще пойму почему при разборе 68к код находится, но не весь. нооооо эта моя теория такая себе... слабенькая.

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #63 : 13 Февраль 2024, 11:55:27 »
Потому что не у всех функций адреса абсолютные. А такие jsr (a0, d0), т.е. адрес заранее не известен. Или такие jmp (a0).

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1144
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #64 : 14 Февраль 2024, 00:07:50 »
Да, блоки инструкций соединены друг с другом - блоки вызывают другие блоки и возвращаются назад, или же прыгают без возврата. Но есть и прыжки по адресу, который в регистре или памяти. Этот адрес создаётся инструкциями перед тем как прыгнуть по нему. Зачем это нужно? Например, switch примерно так работает. Есть адрес первого элемента массива адресов для прыжка (пусть этот массив начинается с 0x1234, например). В регистр записываем case (пусть это 2), умножаем его на размер адреса (2 байта) и прибавляем этот самый адрес начала массива. Вот мы получили адрес адреса в массиве (0x1238) и теперь можем прыгать по нему. Получается эффективнее, чем проходить по огромному ряду if'ов. Поправьте меня, если уже забыл детали.
Можно узнать адрес этого массива увидев, как инструкции записывают его в регистр и начинают что-то мутить с ним, а потом заканчиваются прыжком по этому регистру. Но как определить размер массива - уже непонятно, это меня и интересует в работе Иды. Видимо, надёжного варианта нет? Обычно, этот массив можно увидеть после блока с прыжком по регистру, но не всегда. Придётся реверсить Иду ^_^
В своём дебаггере я планирую сделать функцию, собирающую эти адреса. Но это уже динамический анализ, не статический. Т.е. придётся проходить игру несколько раз по разному.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #65 : 14 Февраль 2024, 02:02:09 »
ну пока моя первоначальная цель сделать парсер, чтобы он на выходе рожал 100% совместимый код с существующим ASM68K.exe. понятно что ASM68K.exe кривой и косой и местами прозёвывает команды с ошибками, но очень удобно что он в количестве одна штука и очень маленький и простой в использовании. и можно пихать копию в каждую папку с проектом. ида так делать код не умеет. да и докучи ида еще и с ашипкаме код рожает :) я прям удивился когда увидел. святая ида и на тебе!

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #66 : 14 Февраль 2024, 09:52:30 »
ну пока моя первоначальная цель сделать парсер, чтобы он на выходе рожал 100% совместимый код с существующим ASM68K.exe. понятно что ASM68K.exe кривой и косой и местами прозёвывает команды с ошибками, но очень удобно что он в количестве одна штука и очень маленький и простой в использовании. и можно пихать копию в каждую папку с проектом. ида так делать код не умеет. да и докучи ида еще и с ашипкаме код рожает :) я прям удивился когда увидел. святая ида и на тебе!

Нельзя автоматически сконвертировать ассемблированный код в исходный. Есть множество причин, вот некоторые:
1. Нет различий между засовыванием в регистр адреса и засовыванием в регистр числа
2. Какие-то данные могут использоваться относительно разных базовых адресов.
3. Выше уже написали: относительные прыжки и вызовы.

Добавлено позже:
Хочешь, чтобы ида тебе сразу весь ром красиво разложила - такого не бывает. Работа реверс-инженера в этом и заключается - нужно помогать интеррактивному дизассемблеру.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #67 : 14 Февраль 2024, 10:45:25 »
тем временем меня расстраивает слишком долгое время загрузки кода. сам парсинг на команды то шустрый, ноооооо потом, чтобы это все выводить в окошке - я делаю копию массива текстовых строчек кода, и форматирую, добавляя пустые строки между блоками и добавляю "бэшки" (dc.b) где код не разобран. вот этот процесс и занимает кучу времени при запуске.

решил перейти от массива к лист. хотя меня смущает этот самый лист, так как по логике ведь там происходит каждый раз как бы редим массива. при редиме как раз и жрется куча времени. если в первом случае я просто создаю большой массив с запасом, а потом просто не использую пустые незаполненные строчки в конце массива, то есть редима каждый раз никакого нет, то вот при работе листа, по идее, при добавлении нового элемента, как раз и должен происходить этот самый "как-бы редим". зато лист будет удобен, если я начну делать редактирование. удалить строчку, добавить - там все делается влегкую. с массивом тупизм в этом плане.

пойду сделаю копию проекта, и попробую с листом. хотя настроен я весьма скептически на этот лист :)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #68 : 14 Февраль 2024, 10:49:28 »
тем временем меня расстраивает слишком долгое время загрузки кода. сам парсинг на команды то шустрый, ноооооо потом, чтобы это все выводить в окошке - я делаю копию массива текстовых строчек кода, и форматирую, добавляя пустые строки между блоками и добавляю "бэшки" (dc.b) где код не разобран. вот этот процесс и занимает кучу времени при запуске.

решил перейти от массива к лист. хотя меня смущает этот самый лист, так как по логике ведь там происходит каждый раз как бы редим массива. при редиме как раз и жрется куча времени. если в первом случае я просто создаю большой массив с запасом, а потом просто не использую пустые незаполненные строчки в конце массива, то есть редима каждый раз никакого нет, то вот при работе листа, по идее, при добавлении нового элемента, как раз и должен происходить этот самый "как-бы редим". зато лист будет удобен, если я начну делать редактирование. удалить строчку, добавить - там все делается влегкую. с массивом тупизм в этом плане.

пойду сделаю копию проекта, и попробую с листом. хотя настроен я весьма скептически на этот лист :)
Есть виртуальные листы. Выводить строчки не все целиком, а чанками, по количеству Видимых.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #69 : 14 Февраль 2024, 10:55:04 »
с отображением то в окне я так и делаю. в зависимости от положения вертикального скроллбара делается вывод с какого значения по какое надо выводить... тут все в порядке. не в порядке форматирование главного общего массива :) где бы строчки шли друг за другом для удобства отслеживания и привязки к положению вертикального скроллбара.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #70 : 14 Февраль 2024, 16:07:44 »
чот так и не смог победить версию с листом :) где-то повылазили глюки... никак не могу найтить где именно. но есть одна теория...

в общем смотря на иду, где она останавливает блоки и разделяет - пока определил для себя что во время парсинга надо останавливаться на следующих функциях:
rte, rtr, rts, jmp, braпонятно, что я еще пока только начал и может там еще какие есть "финальные" функции... и вроде как bsr туда не входит. в смысле после неё есть дальше код в иде. но в одном месте она все-таки срабатывает как "конец функции".



вон чуть ниже точно такая-же bsr и концом она не является. каким образом ида все-таки поняла что первый bsr это конец функции? потому что всплыл дальше адрес, как вторая функция, на последующий адрес после brs? и типа поэтому ида решила что после первого bsr есть конец функции?


Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #71 : 14 Февраль 2024, 18:37:41 »
Видимо, потому что sub_7EC, вызывается из других мест типа JSR sub_7EC или просто JMP sub _7EC. А после второго bsr, даже метки нет.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #72 : 15 Февраль 2024, 07:22:52 »
непутевый ASM... по моему этот дальтоник не различает  :cry:
exg d1, d0
exg d0, d1

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1144
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #73 : 15 Февраль 2024, 11:43:35 »
Ты уже приходишь к алгоритму дизассэмблера. Не лучше ли тебе тогда делать его? :lol:
Недавно в теме по GensIDA один чел тоже так начал писать проходчик по блокам, но бинаринка.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #74 : 15 Февраль 2024, 13:02:47 »
так в этом и суть. но пока что-то он ошибочно начал прыгать и все путать :) но меня убивает оооооооочень долгая загрузка. понятно еще куча команд не внесена, ошибочные параметры местами, прыжки не верно читает, и читает только то что явно связано с Reset... но я доволен как слон.

Добавлено позже:
и я так понимаю что не стоит рассматривать suba как указатель куда-либо? а то программа моя там начитала в заголовке с адреса Reset на свою голову несуществующих команд...
« Последнее редактирование: 19 Февраль 2024, 10:55:15 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #75 : 18 Февраль 2024, 16:10:15 »
пока не представляю как реализовать "горячее" дизассемблирование по клику мышкой в необработанный участок в окошке редактора... так-же надо сделать клик по метке, чтобы она подсвечивалась и прыгала во втором окошке в то место где она собственно и находится. потом уже предвижу проблему, которую хрен знает как победить :) как бы если метка прыгает на начало команды я еще пойму... но что делать если метка получается прыгнет не на саму команду, а на её данные?
типа
0x1234 0x4567
где 1234 команда джамп, а 4567 адрес джампа куда прыгать. и предположим где-то в коде попалась метка, которая ссылается не на начало всей этой конструкции - то есть не на 0х1234, а сразу на 0х4567. но у меня то эти данные уже "съедены" внутри функции и тогда в моем случае метка будет влеплена после джампа и после данных джампа, то есть метка станет ошибочной. а значит ром соберется с ошибкой, если вообще соберется. пока конечно такой проблемы еще не попадалось, но я разбирал то только парочку ромов всего... да и я явно какие-то редкие команды вовсе пропустил :)

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #76 : 19 Февраль 2024, 10:57:10 »
конечно не все хотелки реализовал, но вполне доволен результатом :)


глюки конечно фиксю... но и добавляю новые :)
« Последнее редактирование: 28 Февраль 2024, 09:37:43 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #77 : 22 Февраль 2024, 14:05:50 »
в очередной раз ASM68K.exe подводит  :cry: может конечно эти команды равнозначны... но по итогу это разные опкоды и ром получается не идентичный.
cmp.b #$B, d4
cmpi.b #$B,d4

типа должно было сделать для
cmp.b #$B, d4     ====  B83C
а делает 0С04, как если бы там было cmpi.b #$B,d4


или я может какой-то обязательный параметр в консоли прозевываю... потому что хз для чего они нужны. с /p собирает. но видел другие проекты, где этих параметров... куча навалено. что делают - хз.
asm68k /p BCout.asm,BCout.bin

Добавлено позже:
а вот тут то почему ида решила пропустить два байта? и так она дальше кусками идет. код, такие двухбайтовые пропуски распарсеного кода, опять код. ведь addq это не конец функции или процедуры или еще чего. не понятно нифига... естественно что на таком месте у меня все спотыкнулось :)

« Последнее редактирование: 22 Февраль 2024, 14:47:45 от SeregaZ »

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 787
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #78 : 22 Февраль 2024, 15:23:06 »
в очередной раз ASM68K.exe подводит  :cry: может конечно эти команды равнозначны... но по итогу это разные опкоды и ром получается не идентичный.
cmp.b #$B, d4
cmpi.b #$B,d4

типа должно было сделать для
cmp.b #$B, d4     ====  B83C
а делает 0С04, как если бы там было cmpi.b #$B,d4


или я может какой-то обязательный параметр в консоли прозевываю... потому что хз для чего они нужны. с /p собирает. но видел другие проекты, где этих параметров... куча навалено. что делают - хз.
asm68k /p BCout.asm,BCout.bin

Добавлено позже:
а вот тут то почему ида решила пропустить два байта? и так она дальше кусками идет. код, такие двухбайтовые пропуски распарсеного кода, опять код. ведь addq это не конец функции или процедуры или еще чего. не понятно нифига... естественно что на таком месте у меня все спотыкнулось :)



Конечно, неравнозначны. Ибо CMPI это сравнение с непосредственным операндом.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #79 : 22 Февраль 2024, 16:41:43 »
а вот чего я и боялся :) когда метка прыгает не на саму команду, а на её параметр. в результате у меня метка путается и ставится неверно... у меня предполагается что метка идет всегда перед командой, а никак не может прыгать на параметр команды. то есть получается метка должна была быть между командой и её параметрами.

хотелось бы конечно надеяться что это изначально афторы накосячили. тем более что это Stone Potectors, которая вроде как не выходила...

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #80 : 23 Февраль 2024, 13:38:49 »
и какая версия Doom Troopers правильная? чот я видимо не то скачал :) ида с ума сходит от этой игры :)

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #81 : 24 Февраль 2024, 06:17:02 »
так-же Ида облажалась с Jungle Strike. блин... я же на неё ориентируюсь, а она заподлянки берет и подкидывает :)

Добавлено позже:
итак в BattleTech есть случай, когда lea прыгает не на команду, а на параметр команды, что дичайше руинит всю мою так тщательно выстроенную вселенную :) первоначально то я хотел отказаться от всяких математических операций внутри какого-то параметра типа:
lea ($FFFF + $FFFF).l, a0потому что если буду делать ассемблер (ну чтобы все было в одном флаконе и дизассемблер и ассемблер, так как ASM68K.exe, не смотря на всю мою лобовь, тоже сговорился с Идой и они вместе подсовывают подлянки) то там сами параметры то разобрать тот еще геморрой, а если в параметрах будут докучи еще и математические операции, то объем геморроя увеличится в разы. но по видимому выбора особо нет... ассемблер видимо пока откладывается. дизассемблер бы до ума довести. и вот для подобного случая, как в BattleTech:


придется выкручиваться плюсиками внутри параметра. то есть я думаю сделать проверку: если ссылка ведет не на начало команды, то сначала сдвигать все дело назад до обнаружения этой самой команды, лепить там метку, которую поймет моя программа и корректно отобразит, а после в самой ссылке на эту метку добавлять плюсиком 2 или 4 или насколько там байт ссылка шлется не туда куда надо. в теории на выходе должно все получится как и задумано... весь вопрос как это все организовать :) голова пухнет. и это я еще не добрался до "горячего дизассемблирования"... там пока вообще без идей как это реализовать. не говоря уже про третий этап марлезонского балета, на котором хотелось бы прикрутить эмулятор.
« Последнее редактирование: 24 Февраль 2024, 09:22:15 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #82 : 24 Февраль 2024, 11:00:27 »
конечно пришлось прилично поголовоболить, но вроде бы все получилось. теперь есть проверка: если ссыль указывает не на команду, а на параметр, то тогда ссыль двигается назад до команды, рисуется перед командой. а в самой-же строчке, где была ссыль добавляется сколько-то байт, чтобы ссыль по итогу ссылалась как оно было в оригинале - не на начало команды, а на параметр. я, конечно, своим диванно-икспердным мнением считаю что это афторы игры ашиплись, когда писали свою игру и поэтому ссыль битая по моему мнению. но раз оно так было в оригинале, значит надо сделать так-же как и было. я доволен, что все получилось :)


Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 205
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #83 : 24 Февраль 2024, 22:50:38 »
SeregaZ, может этот LEA будет ссылаться на те байты внизу скрина, когда по итогу будет использован?

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #84 : 24 Февраль 2024, 23:33:10 »
Да всё там правильно. Там же цикл с предикрементом. Перед тем как в первый раз будет обращение к регистру а1, он будет увеличен на 4 и как раз будет указывать на первый longword из таблицы.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #85 : 25 Февраль 2024, 05:23:00 »
ну из десятка ромов, которые я грузил в свой дизассемблер - такие "битые" ссылки встречались раза два всего. поэтому то я и подумал о косяках разрабов.

из соседней темы я узнал, что у меня есть огромная семья... что команды надо читать из четного байта. это прям закон закон? я к тому, что сейчас я мышкой тыкаю в любое не обработанное место и с этого адреса начинается попытка парсинга. то есть можно тыкнуть на нечетный байт. просто если реально команда может лежать только в четном байте, то я тогда должен буду переделать, чтобы селект можно было выставить только на четный байт и уже с него, если надо, стартовать парсинг. однако я сужу по примеру банков GEMS - там совсем не обязательно что банк будет размером кратно 2. то есть последующий байт после банка может быть не четным, а поскольку данные в роме идут друг за дружкой, то соответственно какая-то команда, получается, может выпасть на не четный байт. поэтому хотелось бы сей момент уточнить...

Добавлено позже:
SeregaZ, может этот LEA будет ссылаться на те байты внизу скрина, когда по итогу будет использован?
этот плюсик +$2 и делает прыг LEA точно таким-же, как он и был в оригинальном коде рома. то есть с точки зрения рома ничего не изменилось, то есть мой дизассемблер делает асм код такой, который ASM68K.exe на выходе собирает 1 в 1 как оригинальный ром. то есть в этой метке, не смотря что она теперь указывает на другое место, из-за дополнительного +$2 получается значение, какое и должно было быть. сами то метки в ром не попадают - они лишь маркеры для ASM68K.exe откуда производить расчеты. поэтому тут все в порядке :)

Добавлено позже:
предварительно вроде горячее дизассемблирование по кнопке С сделал. и она даже ругается, когда в результате парсинга найдет ошибки и просит вернуть как было. и поскольку с функционалом отмены тут целая история... то как в Иде я не сделаю. нужно будет вручную кнопками R - reset или S - save подтверждать или сбрасывать результат парсинга. это не совсем удобно... и если было подтверждено сохранение, то потом уже нельзя будет откатить, как ида делает. типа превратить обратно код в сырые байты - undefine. пока без того правила четных байт. подожду отмашки, что это прям реально закон и сделаю, если смогу. а то могу и не смогу... ведь получается у меня "бэшки", с целью более быстрого сохранения - сохраняет в ряд по 16 штук. и первый байт это совсем не обязательно что четный. надо кумекать как это сделать...
« Последнее редактирование: 25 Февраль 2024, 08:29:07 от SeregaZ »

Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 205
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #86 : 25 Февраль 2024, 10:34:39 »
SeregaZ, я понял что соберется как в оригинале  :)  я имел в виду что это не косяк разрабов. Такие места, где команда ссылается на операнд другой команды, надо как-то помечать дизассемблером, чтоб потом самому разбираться и вручную корректировать. Теоретически это действительно мог быть косяк

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #87 : 25 Февраль 2024, 14:12:51 »
ну так в принципе готово. пока без этой проверки на четный байт для старта парсинга. по идее ида то дает возможность на любом байте начать парсить и на четном и на не четном. другое дело если команды только на четные байты - то тогда ида ошибается :) дальше уже эмулятор только подключать пытаться остается... ну или за ассемблер засесть. хотелось бы эмулятор всеж сначала - но там ваааааще не понимаю. с ассемблером то все понятно, за исключением добавления попаболи с математическими операциями внутри параметра. но я думаю можно хотя бы сначала без операций сделать ассемблер, с шаблонными параметрами. а вот эмулятор... не понятно.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #88 : 25 Февраль 2024, 18:55:45 »
и рано я радовался :) показалось что горячее дизассемблирование работает шустро, хотя по прогнозам должно было тухло работать... а это я тестовой ром маленький гонял и радовался :) загрузил хак мк3у и все... затуп в этот момент неимоверный :)

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1144
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #89 : 26 Февраль 2024, 00:52:17 »
из соседней темы я узнал, что у меня есть огромная семья... что команды надо читать из четного байта.
Из этой же своей темы мог узнать:
при первой же попытке прыжка в подпрограмму проц улетит в исключение, от попытки записи 32бит значения по нечетному адресу
У Сеги код только по чётным адресам, да.