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

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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #90 : 26 Февраль 2024, 05:45:15 »
видимо в тот момент я думал о голых женщинах и все пропустил. значит будем прикручивать четность, чо уж...

Добавлено позже:
хныыыыыыыы... никогда такого не было и вот опять! поскольку у нас тут теперича религия четности, то хотелось бы чтоб нераспарсенный код всегда начинался с четного. а то сейчас селектица криво, если метка пришлась на нечет... вот значит я думаю надо добавить проверку на метки. если метка летит на нечетный адрес - сдвигать метку на 1 байт влево, а в той команде где она использовалась, добавлять плюсиком +$1, так-же как в других мутных местах уже делаю. хотя визуальная ценность сего решения весьма сомнительная... в том плане, что жмакнув на такой ссылке с плюсом - окно перекинет именно что без плюса, то есть будет не точная адресация для глаз пользователя... голова то дырявая и не удержит заметку, что там на самом деле +1.



Добавлено позже:
либо ладно хрен с ним. подумаю над селектом, чтобы он через строку прыгал и правильно подсвечивал зеленым два разных кусочка предполагаемого опкода - два байта.
« Последнее редактирование: 26 Февраль 2024, 08:45:23 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #91 : 26 Февраль 2024, 11:39:16 »
теперь дает заселектить только четные байты, и подсвечивает оба байта возможного опкода, если он разбит на строки или даже между ними метка. в случае если был нажат горячий дизасм - метка сама поменяется на метка+1 в том месте, откуда она ссылалась на этот адрес.

Добавлено позже:
однако затуп при горячем дизасме меня расстраивает :) я сделал так:
1. первоначальный парсинг. собирается только код и вносится в лист.
2. происходит копия этого листа в некую базовую копию.
3. происходит добавление в лист "бэшек" - то есть нераспарсенного кода. (получается дописывает в конец листа все блоки бэшек)
4. сортировка листа по адресу в роме. тут все становится на свои места. блоки кода правильно чередуются с блоками бэшек.

тут приспичило пользователю жмакнуть С - горячий дизасм на какой-то бэшке.
1. происходит восстановление копии первоначального парсинга кода в основной лист.
2. происходит добавление нового адреса, или даже адресов, что родились при горячем дизасме.
3. происходит добавление в лист бэшек.
4. сортировка листа по адресу.

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

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

самое долгое во всем этом - добавление бэшек. это занимает 95% времени затупа. во время этого добавления происходит коллекционирование бэшек в 16 в ряд, печать, и если встречается метка - метка или код - делит блоки бэшек. и вот эта катавасия жрет основное время и портит мне все настроение, и портит впечатление от программы.
« Последнее редактирование: 26 Февраль 2024, 11:51:22 от SeregaZ »

Оффлайн SeregaZ

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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #93 : 28 Февраль 2024, 07:45:15 »
неть, не помогло :) как тупил мk3uhack так и тупит... стало конечно быстрее, а с маленькими ромами так и вовсе почти как в иде шустро, но хотелось бы чтоб хоть 10 мегабайт ром загрузи - так-же молниеносно обрабатывало. еще наверное надо сохранение будет переработать. сейчас при сохранении опять перерасчет идет :)

да и если много баловаться С и R - вылетает, зараза :)

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #94 : 01 Март 2024, 10:41:43 »
пока тупик и продвижение в моих задумках нет - подумываю сделать сохранение ручного парсинга. наверное это будет текстовой файл, типа "название рома.adr", куда будут складываться все найденные адреса первый раз и добавленные вручную через С. соответственно при загрузке рома сначала будет произведена проверка: а не загружался ли данный ром ранее? если да, то загрузить лист адресов из этого файла. правда остается вопрос - исправленные адреса туда пихать, или все-таки оригинальные... то есть когда адрес прыгает не на начало команды, а на параметр.

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

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #95 : 13 Декабрь 2024, 16:08:08 »
Решил я тут начать пилить небольшую демку для Playmark'овского железа Excelsior, и тут вырисовалась небольшая проблема - вроде прерывание №2 для данной железки я уже разрешил, однако самого перескока к соответствующему адресу, когда приходит время прерывания, не происходит - только значение 3-го нибла регистра SR меняется с 1 на 2, и MAME'овский дебаггер тоже никакого прерывания не регистрирует.
Внизу прикреплены иллюстрирующий странность в работе M68000 тестовый набросок кода и полученный в результате его сборки ром (запускать через командную строку - mame excelsr -d). Что же я всё-таки упустил?

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #96 : 14 Декабрь 2024, 01:35:54 »
а чем собиралось? есть ли альтернатива? типа несколькими сборщиками один и тот-же код собрать и посмотреть?

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #97 : 14 Декабрь 2024, 04:46:12 »
а чем собиралось? есть ли альтернатива? типа несколькими сборщиками один и тот-же код собрать и посмотреть?

Всё тем же нашим общим "старым знакомым" - asmx. И собрал он, судя по тому, как слабо разнятся исходник с листингом MAMEовского дебаггера, правильно.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #98 : 14 Декабрь 2024, 05:39:41 »
а что значит
bra $не должно ли было быть после доллара какое-то значение?

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #99 : 14 Декабрь 2024, 06:28:49 »
а что значит
bra $не должно ли было быть после доллара какое-то значение?

В синтаксисе asmx это - текущий адрес. По идее, программка должна тихонько стоять на месте в ожидании прерывания, вот только чё-то последнего не поступает. Точнее, поступает, но на него нет должной реакции.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #100 : 14 Декабрь 2024, 06:46:44 »
ну я бы предложил написать некоему, по всей видимости, итальянцу Pierpaolo Prazzoli https://twitter.com/pprazzoli?lang=en и спросить у него, получить инфу из первых уст :)

Оффлайн Docm@n

  • Пользователь
  • Сообщений: 651
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #101 : 14 Декабрь 2024, 10:17:08 »
Я тут встряну немного.

Первый раз такое вижу.
bra $

 BRA - это же аналог JMP, разница лишь в размере инструкции. То есть это более быстрый способ перейти на короткие ветвления, если мне память не отшибло bra.s это скачок на 7E вперёд или назад, а bra.w на 7FFE. Во первых надо было короткий переход использовать, а во вторых - переход без адреса, как может вообще работать? И какая задача? зациклить текущий узел кода или хде?

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #102 : 14 Декабрь 2024, 11:43:57 »
Я тут встряну немного.

Первый раз такое вижу.
 BRA - это же аналог JMP, разница лишь в размере инструкции. То есть это более быстрый способ перейти на короткие ветвления, если мне память не отшибло bra.s это скачок на 7E вперёд или назад, а bra.w на 7FFE. Во первых надо было короткий переход использовать, а во вторых - переход без адреса, как может вообще работать? И какая задача? зациклить текущий узел кода или хде?

Именно как-раз таки зациклить. Про "отсутствующий адрес" - вот исчерпывающе всё объясняющая вырезка из руководства от самого разработчика того ассемблера, которым я пользуюсь (см. прикрепления). Что интересно, когда адрес не указан, то к bra даже постфикс s добавлять не требуется - она уже автоматом транслируется как $60fe.

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #103 : Вчера в 13:31:23 »
Ну, вот, пришла пора рассказать, зачем таки, собсна, спрашивал за железо Excelsior. История будет долгая и о-о-о-оо-ооочень пахомистая, так что приготовьтесь.

Незадолго до этого один мой знакомый привёз из Гонконга одну презанятную вещь. Дело в том, что Гонконг уже давно имеет славу настоящего сталкерского (не в смысле преследования и слежки за людьми, а в смысле бродьбы по разного рода заброшкам) рая из-за парадоксального, учитывая тамошний жёсткий перманентный дефицит свободную жилплощадь и совершенно логично вытекающих из него неадекватных цен на жильё, обилия, по факту, бесхозной, находящейся в подвисшем юридическом состоянии недвижимости, до сих пор принадлежащей разным мелким фирмам-призракам, хрен знает, чем занимавшимся, и куда и когда девшимся. Так вот, на одном из средних этажей совершенно неприметного высотного здания в самой глубине города, заходит он как-то в одну такую квартирку, переоборудованную под офис (внутри, по словам моего знакомого, похожий на школьный клуб "Подвиг", приписанный к иркутской 39-й школе - не спрашивайте, я не в курсе даже, когда и каким ветром его в этот клуб, что бы тот собой ни представлял, заносило) некоей Haak Lin Faa (黑蓮花, "Чёрный Лотос") Industries. Впрочем, Industries для них слишком громкое слово: настоящие собственные промышленные мощности им вряд ли даже в самом сладком сне снились - обычная, как это у нас называют, полуподвальная IT-фирма, чей потолок - ручная кустарная сборка платок из самых стандартных компонентов, которые можно купить в любом ближайшем магазине радиоэлектроники.

Чтобы войти внутрь офиса, обращаться пришлось к услугам фирмы по аварийному взлому замков. Все окна квартиры были давно зажалюзены, так что воздух внутри был настолько спёрт, будто бы её лет сто не проветривали. Особо ценного ничего в запертом на протяжении десятков лет офисе найти не удалось - кругом были лишь длинный книжный шкаф во всю ширину одной из стен следующей за прихожей комнаты, до отказа забитый какими-то пожелтевшими пыльными, возможно, даже плесневелыми папочками на китайском, да всё какие-то картонные коробки с очевиднейшим электронным мусором. И лишь в одной из таких картонок лежала полусгнившая датированная 2003 годом unpopulated ROM-микросхемами плата, служившая, по всей видимости, для сугубо отладочных целей.

Её-то мой знакомый, будучи, кроме любителя сталкинга, ещё и электронным гиком, с собой и привёз. Уже подысследовав её дома, он с удивлением обнаружил, что железячка-то - ни что иное, как цельнотянутый (с поправкой, конечно, на "местную", характерную именно для гонконгских реалий 2003 г., элементную базу) Excelsior - видимо, итальянская технология долго ходила по рукам, прежде чем по итогам своего 8 (если считать от от указанной в официальных флайерах даты 1995)-летних скитаний осесть в Гонконге. Что, впрочем, неудивительно - среди стран-"подбиральщиков объедков" за флагманами мирового игростроя на момент 2003 г. имелась своя иерархия: на первом месте была Южная Корея, чьи фирмы, которые у нас обычно, долго не раздумывая, именуют пиратскими, на самом деле трудились на этаком юридическом пограничье (например, Yun Sung) - в продукции таких практически обязательно были откуда-то по мелочи свистнуты или часть кода, или ресурсы, или геймплейная механика, или железо, и всё равно игра в общем и целом смотрелась их собственным продуктом, а не пиратской копией или хаком чьей-то чужой. Далее шли как раз Гонконг с Тайванем, подъедавшие в т. ч. и за Кореей. "Редуцентом 3-го порядка", как это называется в школьном курсе биологии, был материковый Китай. Ну, и совсем уж днище днищенское - это Юго-Восточная Азия и прочий третий мир. И чем ниже ты был в этой пищевой цепочке, тем более как до жирафа до тебя доходили чьи-то поюзанные технологии. Особую, кстати, пикантность картинке придаёт тот факт, что Playmark большую часть своей истории была именно классической бутлеггерской фирмой, которая перешла на клепание своего продукта достаточно поздно - то есть в масштабах уже не одной лишь Азии, а мира в целом Гонконг спускается со 2-го порядка на 3-й.

Впрочем, небольшое отличие от железа Excelsior у таинственной платки всё же было - порт для джойстика у неё был намертво подсоединён к световой указке (увы, обскака японцев с их Wii китайцами не случилось - по сути, это был всё тот же старый добрый пистолет). Неясно, кстати, было, а действительно ли эта Haak Lin Faa на аркадный рынок нацеливалась - их железка могла с примерно равной вероятностью служить сердцем и банкоматов (хотя нет, вряд ли - они в свой модели управления довольно консервативны и предпочитают привычный нампад), и мультимедийных цифровых информационных стендов, и интерактивных школьных досок (хотя тоже сомнительно - вряд ли цифровизация образования в Гонконге в 2003 году была так же высока, как сейчас), и больничных тестеров зрения либо координации, и Plug&Play-телеигр - да мало ли чего ещё. Однако, сколько ни гадай о возможном предназначении устройства, ясности это не внесёт ни грамма.

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #104 : Вчера в 13:52:08 »
Теперь конец предисловию, переходим к сути - поначалу я хотел написать демку для "чистого" Excelsior, и лишь потом начать добавлять в MAME архитектурные нюансы именно железки от Haak Lin Faa, переписывая постепенно код уже под них. Про ассемблер ARM я начал впрашивать, уже когда совсем-совсем отчаялся решить проблему с прерываниями для M68k и решил, что "да ну его таки на хрен, задолбало", и вспомнил, что есть на свете ещё одна платформа, тоже с поддержкой битмапов, но уже не палитрованных 8-битных, как у Excelsior'а (у которого, самое смешное, что каждый пиксель всё равно занимает 2 байта - чудовищно неэкономное решение), а задействующих сразу все те 32 с лишним тысячи цветов, которыми она оперирует - речь, конечно же, о GBA.

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

Ну а что же до Excelsior'а, то оттуда можно взять чисто "на добрую память" и переписать под ARM алгоритм сжатия картинок.

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1169
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #105 : Вчера в 17:15:51 »
Такой графомании я ещё не встречал, было физически больно читать :lol:

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

  • Пользователь
  • Сообщений: 811
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #106 : Вчера в 17:51:59 »
Такой графомании я ещё не встречал, было физически больно читать :lol:

Предыстория требовала, для понятности общего контекста, большого количества деталей.

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1169
    • ВКонтакте
    • Steam
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #107 : Сегодня в 00:13:15 »
Я перегнул, ты уж не обижайся, читать было всё-равно интересно, но воды лишней многовато.
Вот вариант от Яндекса:
Цитата
История находки
• Знакомый привёз из Гонконга плату Excelsior
• В Гонконге много заброшенной недвижимости, принадлежащей мелким фирмам
• В одной из квартир нашли офис фирмы Haak Lin Faa Industries
Описание офиса
• Офис был переоборудован под школьный клуб "Подвиг"
• Внутри были пыльные папки и картонные коробки с электронным мусором
• В одной из коробок нашли плату Excelsior 2003 года
Происхождение платы
• Плата была цельнотянутой, с местной элементной базой
• Технология Excelsior долго использовалась в Гонконге
• Гонконг и Тайвань были "подбирателями объедков" за мировыми игровыми компаниями
Иерархия стран-подбирателей
• Южная Корея была на первом месте
• Гонконг и Тайвань следовали за Кореей
• Материковый Китай был "редуцентом 3-го порядка"
• Юго-Восточная Азия и третий мир были на дне
Особенности платы
• Порт для джойстика был подсоединён к световой указке
• Неясно, для какого рынка предназначалась плата
• Возможные варианты использования: банкоматы, мультимедийные стенды, интерактивные доски, больничные тестеры, Plug&Play-телеигры