Scorpion ZS-256turbo_Проф ПЗУ27040_Smuc_HDD_PCkeyMause(Scorp)_GS_512+XTR Модем(X-Trade)
ZX-Evolution rev.С+VDAC+OldGS_512+OpenSMUC+TSFM+TS-conf
Amiga500 1m+512k
Schneider EuroPC
ReVerSE-U16
Покажите мне карту сегментов. Или дайте базу и я покажу что не так.
Вот, пожалуйста, база.
С уважением, Станислав.
В общем, все проблемы из-за того, что IDA не заточена под банксвитчинг. Несмотря на то, что вы при создании базы присвоили всем переключаемым сегментам адреса 4000-7FFF, IDA этот параметр применяет только к счетчику команд, продолжая использовать реальный адрес сегмента в исходном файле для вычисления относительных адресов. Потому как рушатся только те команды, которые, используют относительную адресацию операнда. Кстати, они не соответствуют Z80. И если отменить распознавание и по чистому запустить сразу, например, в сегменте ROM04, то все ошибочные адреса вылезают в ROM06, что и соответствует правильным адресам, если бы ROM04 реально стоял в 4000, а ROM06 при этом как раз попадает на ОЗУ. У IDA есть вот такое окно:
Это карта видимости сегментов. И согласно мапперу, ROM00 должен видеть всех, а ROM01...ROM1F должны видеть только ROM00 и все верхние сегменты (адреса внутри процессора 8000-FFFF). Если это указать здесь, то часть ошибок уходит, остаются только спецкоманды Шарпа с относительной адресацией. И я не знаю, как это решить здесь, может плагин-маппер нужно написать (не путать с лоадером)?
PS А вот массивы лучше задавать вот с такими параметрами:
И тогда, было:
Стало:
- - - Добавлено - - -
Ах да, куча мест, где код распознан как массив и наоборот (например, массив выше это код). Продолжайте изучать тему дизассемблинга, повышайте свое мастерство. И, быть может, в этом как раз и таится загадка этих ошибочных адресов, которых быть и не должно. Кто знает?
Да, я пытался шаманить в том окне, аналогичным образом, но это, к сожалению, не принесло нужного результата.
Это скорее пожелание к IDA Pro, а не ко мне Потому что я предоставил базу сразу после загрузки в неё бинарника и автоматического распознавания без малейшего вмешательства с моей стороны, чтобы полностью исключить нарушение логики переключения банков, включая и окно, о котором шла речь выше. Поэтому, естественно, во многих местах код и массивы автоматически определены неверно.
С уважением, Станислав.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Там же, где и остальные окна про сегменты.
HardWareMan, ага в версии 6.8 такого нет
С уважением,
Jerri / Red Triangle.
Раз уж зашла речь о loaders. Вот вам варианты на Python. Пишем Loader в любом текстовом редакторе, ложем в папку loaders и пользуемся.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)