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

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

Оффлайн SeregaZ

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

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



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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2510
  • Пол: Мужской
  • ливнул с форума
    • 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

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

Оффлайн SeregaZ

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

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

Оффлайн SeregaZ

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

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