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

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 27

Тема: Выравнивание, утрамбовывание и впихивание кода + быстрые таблицы переходов и SJASM

  1. #11
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vadim Посмотреть сообщение
    И ещё. Для некоторых объясни, зачем применяется "выравнивание кода и данных" где и как?
    таблицы для быстрого обращения выравнивают по адресам кратным 256
    при этом часто таблицы меньше 256 байт и место внизу таблицы простаивает

    так же часто
    есть необходимость загружать какието данные
    и чтоб они ложились с адреса $8000 до неизвестно какого ($8000,$8001...)
    а код должен быть максимально далеко от данных и в быстрой памяти
    для этого нужно выравнивание по правому краю ($FDFF, $FDFE...)
    которого нет ни в одном компиляторе

    ну и при этом так же часто нужно
    чтоб определенный код занимал конкретные адреса
    и не какие либо иначе

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

    а у меня все это в каждой программе...
    почему другим это никогда не было нужно мне непонятно...


    а теперь не нужно морочить голову
    писать вычислитель адресов
    (у Simon-a Owen-a для выравнивания используются пустота переменной длины(и по моему это не рационально))
    теперь просто вокруг каждой процедуры указываем утрамбовывать код по правому\левому краю\выравнивать\ложить по конкретному адресу
    и процедура автоматически запихивается в свободное место


    ну и при использовании быстрых таблиц
    в коде образовывается много дырок
    которые не рационально не заполнять

    тк адресуемой памяти у спектрума таки мало

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

    другие ветки sjasm-а вообще не компилят
    а кричат что lua код занимает больше чем 32к
    которых хватит всем


    Цитата Сообщение от Vadim Посмотреть сообщение
    Поподробнее можно? Почему тактов пентагона не хватает? Там что, оцифровка идёт что ли? Какие 16 страниц? У пентагона 8 страниц, 16 у скорпа.
    дык там эмулятор 6502...
    тк .sid это код плеера
    а сид пока только железный (пока)


    16
    256 байтных "страниц"
    придумаешь лучшее название буду использовать

    и тактов пентагона как раз хватает
    а вот тормознутых скорпионовских нет




    - - - Добавлено - - -

    Цитата Сообщение от Vadim Посмотреть сообщение
    должно было быть ld l,a наверное?
    до очепятка
    но смысл процедуры и так ясен

    - - - Добавлено - - -

    Цитата Сообщение от Vadim Посмотреть сообщение
    Как делаются переходы откуда и как?
    на счет переходов вопрос не понел

    - - - Добавлено - - -

    послушать разницу можно в эксклюзивном унриале со встроенным SID-ом
    https://dropmefiles.com/F4Dzv
    который у меня, кстате, очень не стабильно работает

    в оригинале как только кончается буфер (через несколько секунд)
    начинается проседание скорости
    Последний раз редактировалось NEO SPECTRUMAN; 02.08.2019 в 17:22.

  2. Этот пользователь поблагодарил NEO SPECTRUMAN за это полезное сообщение:

    Vadim (03.08.2019)

  3. #12
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    NEO SPECTRUMAN, drbars не осиливает впихивание диалогов в новую диззи вандефул. Ибо Оливеры разошлись не на шутку, так и сыпят отборным английским юмором! Сможет ли сабж каким-то образом помочь утрамбовать тексты в диззю?
    Куплю корпус и материнку от Spectrum +2/+3

  4. #13
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Сможет ли сабж каким-то образом помочь утрамбовать тексты в диззю?
    я не знаю как там лежат тексты
    скорей всего они пакованные

    возможно там используется таблица в 512 байт или больше со списком адресов по которым лежит начало каждого текста
    вот ее можно сократить в 2 раза
    но никто не гарантирует что после этого сам текст не будет занимать больше
    тк получаться дырки которые скорей всего не заткнуться...
    (алгоритм затыкание явно не идеальный
    нужна сложная сортировка с построением всяких деревьем на уровне компилятора
    а у меня втыкивание в первое попавшееся место без проверки рациональности и последствий этого)

    если там есть дырки от выравнивания их можно попытаться заткнуть

    если там там есть обращения к таблицам
    в виде
    ld c,a
    ld b,0
    ld hl,tabaddr
    add hl,bc
    ...

    их можно заменить
    на короткое и быстрое
    ld l.a
    ld h,tabhaddr

    а таблицы выровнять
    и заполнить полученные дырки "утрамбовыванием" (все tamp процедуры)

    но выигрышь если и получишься то считанные байты...




    все "выравнивание" в этой теме
    это оптимизация по тактам а не объему

    и все процедуры написаны для использования совместно с быстрыми таблицами
    без быстрых таблиц код и данные можно хоть и с трудом разложить и руками и каким то не сложым кодом
    а вот с быстрыми таблицами руками работать практически невозможно
    особенно при условной компиляции...
    но освобождают они +15 тактов! (в худшем случае 5) на каждом обращении к таблицам

    а еще эти процедуры нужно подружить со страничной организацией памяти
    но пока не знаю как это правильней сделать
    нужно по 1024К+ переменных на каждую страницу(16к) памяти
    не знаю переварит ли lua sjasm-а такое количество массивов...

    - - - Добавлено - - -

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    drbars не осиливает впихивание диалогов в новую диззи вандефул
    могу посоветовать поискать другой пакер текстов
    и возможно токенизацию часто используемых буквосочетаний если ее нету
    Последний раз редактировалось NEO SPECTRUMAN; 02.08.2019 в 18:42.

  5. #14
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а вот более наглядный пример
    автоматической утрамбовки
    при условной компиляции и изменении размера кода
    на всякий случай уточню что в одном столбце 256 байт

    на таблицах со шрифтами видно
    как затыкается свободное место неполных таблиц
    Последний раз редактировалось NEO SPECTRUMAN; 03.08.2019 в 00:32.

  6. #15
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    дык там эмулятор 6502...
    тк .sid это код плеера
    а сид пока только железный
    Вон оно что. Неужели неосилил никто декомпилировать плейер и переписать на z80? Наверное там код вперемешку с данными?

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    16
    256 байтных "страниц"
    придумаешь лучшее название буду использовать
    Такое название стандартное, в CP/M литературе всегда встречается.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  7. #16
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vadim Посмотреть сообщение
    Неужели неосилил никто декомпилировать плейер и переписать на z80? Наверное там код вперемешку с данными?
    переписать все 1153 плеера?

    впридачу там куча рипов из игр
    а у каждой фирмы свой плеер ато и 7

    это для saa1099 3 плеера
    и все переписали


    а .sid это типо нашего .ay(по моему так называется)
    в котором у нас обычно хранят бипер из фирменных игор
    Последний раз редактировалось NEO SPECTRUMAN; 03.08.2019 в 20:05.

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

  9. #17
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,798
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    1,191
    Поблагодарили
    784 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    переписать все 1153 плеера?
    а не проще дамп в регистры гнать ? (типа PSG)

  10. #18
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    а не проще дамп в регистры гнать ? (типа PSG)
    до можно было бы и такой вариант
    а хватит памяти у спектрума?
    некоторые поделия достаточно длииинные
    и обще принятый формат для сида имено .sid

    и вопрос чем сделать этот дамп?

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


    да и есть и подобный вариант
    по моему звался sid basic или что то в этом роде

    https://zx-pk.ru/threads/27433-sid-p...-spectrum.html
    мало того
    к нему я дажо прилепил эмулятор ковокса для бипера
    только не помню когда о_О


    собственно вот
    https://dropmefiles.com/tkTMB




    в конечном итоге
    риал тайм эмулятор интересней
    Последний раз редактировалось NEO SPECTRUMAN; 03.08.2019 в 21:11.

  11. #19
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,798
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    1,191
    Поблагодарили
    784 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    это тупо код
    там вроде даже время трека хранят в отдельной базе встроенной в плеер
    мне всё это знакомо.
    раньше когда делал *.AY ставил BreakPoint на MainLoop в эмуле и тупо замерял время звучания по часам с секундной стрелкой.
    потом упросил автора одного AYplayer`а делать остановку при исполнение спец.команды,
    так и узнавал точное время звучания.
    ..........
    и я так понял ты пытаешься 6510 эмулировать в реалтайме ?
    не думал о предварительной кросскомпиляции (даже на более мощной машине).
    то есть звук в SID будет посылаться сразу Z80кодом.
    .....
    на спеке есть пара/тройка адвентюр где вообще 68000 эмулится

  12. #20
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    и я так понял ты пытаешься 6510 эмулировать в реалтайме ?

    я не пытаюсь
    6510 и так неплохо эмулируется кодом Simon-a Owen-a
    на свой 6502 эмуль я давно забил

    но у него 30% опкодов помечены как недокументированные и вместо них заглушки...
    и их нужно дописать

    и еще нужно написать эмулятор самого сида
    а в условиях отстутствия нормальной документации...

    любители сидов вообще редкостные... аудиофилы
    не могут сделать анализ работы фильтров и выложить спектрограммы...



    Цитата Сообщение от goodboy Посмотреть сообщение
    не думал о предварительной кросскомпиляции (даже на более мощной машине).
    то есть звук в SID будет посылаться сразу Z80кодом.
    про статическую рекомпиляцию все красиво только в фантазиях
    если начать продумывать все варианты развития событий
    все уже не так красиво

    а если будет самомодифицируемый код?
    (если присмотреться то на вид эмулируемый код очень активно пишет сам в себя)

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

    то есть это проект грандиозной глючности





    ну или это будет рекомпиляция при участии ручек...

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    на спеке есть пара/тройка адвентюр где вообще 68000 эмулится
    и какие?

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Таблица переходов (computed goto)
    от Barmaley_m в разделе Программирование
    Ответов: 17
    Последнее: 03.07.2019, 22:31
  2. Быстрые 41256/4164
    от LeoN65816 в разделе Память
    Ответов: 5
    Последнее: 15.03.2019, 11:52
  3. Программы переходов экрана
    от AAA в разделе Софт
    Ответов: 2
    Последнее: 19.03.2013, 18:02
  4. Таблицы огибающих.
    от Robus в разделе Музыка
    Ответов: 9
    Последнее: 17.01.2013, 11:35
  5. Interference:построение таблицы
    от goblinish в разделе Программирование
    Ответов: 6
    Последнее: 17.11.2012, 13:43

Метки этой темы

Ваши права

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