User Tag List

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя
Показано с 51 по 60 из 75

Тема: SwapSet

  1. #51

    Регистрация
    05.06.2022
    Адрес
    г. Минск, Беларусь
    Сообщений
    27
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jim Посмотреть сообщение
    При входе в функцию выполняется SwapSet — текущие регистры сохраняются в активный набор, загружаются регистры функции.
    При входе в функцию делаешь push только тех регистров, которые используются и экономишь время и память
    Цитата Сообщение от jim Посмотреть сообщение
    Чистый код: Нет постоянного PUSH/POP внутри функций, код проще читать.
    В функции может быть много push-pop поскольку количества регистров зачастую не хватает, ты предлагаешь вместо одного пуша пушить сразу все регистры?

    Цитата Сообщение от jim Посмотреть сообщение
    Изоляция: Никакие изменения внутри функции не трогают регистры других функций.
    Что мешает программе обратиться к ячейке памяти, в которой у тебя сохранёнка лежит и изменить её?
    Цитата Сообщение от jim Посмотреть сообщение
    Чистый код: Нет постоянного PUSH/POP внутри функций, код проще читать.
    Ага, только постоянные ld ix,... и call-ы
    Цитата Сообщение от jim Посмотреть сообщение
    Изначально z80 не умеет плавающую точку, но это не помешало реализовать это программмно. И есть куча примеров игр со сложной графикой. (И да, я знаю про таблицы)
    Ты тот чел с двача?

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

    jim(23.09.2025)

  2. #52

    Регистрация
    31.03.2005
    Адрес
    Новосибирская область
    Сообщений
    128
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Overhead прерываний vs. Overhead SwapSet

    Аргумент критиков: «SwapSet слишком медленный»
    Давайте посмотрим на цифры.

    ---

    1. Разовый overhead
    Параметр Прерывание SwapSet
    Время переключения ~150 тактов ~192 такта

    Разница — всего ~40 тактов..

    ---

    2. Суммарный overhead
    Параметр Прерывание SwapSet
    Частота вызова 50 раз/сек (кадр) или 1000+ раз/сек (таймер) Несколько раз за программу
    Суммарные траты 7 500 тактов/сек (50 Гц) или 150 000 тактов/сек (1 кГц) ~1000 тактов за всё время работы

    Здесь всё очевидно: прерывания стабильно «съедают» тысячи тактов каждую секунду, SwapSet же — копейки за весь прогон программы.

    ---

    3. Разный контекст использования
    • Прерывания — вынужденная плата за связь с железом. Все смирились: «так уж устроен Z80».
    • SwapSet — осознанный инструмент. Его сразу критикуют: «зачем так дорого?»

    На деле же и там, и там сохраняется/восстанавливается состояние ради изоляции контекста.

    ---

    4. Цель SwapSet
    SwapSet — не для tight loop и не для экономии каждого такта. Его задача:
    • изолировать функции друг от друга;
    • дать каждой задаче «свои регистры»;
    • сделать код предсказуемым и модульным.

    Цена в 192 такта оправдана, если цель — ясность и надёжность архитектуры.

    ---

    5. Итоговый контраргумент
    Если сообщество спокойно мирится с 7 500+ тактами overhead от прерываний каждую секунду, то почему вдруг 192 такта на SwapSet, вызываемый пару раз за программу, объявляется непозволительной роскошью? Это ровно тот же приём — сохранение состояния ради изоляции, только на уровне приложений, а не железа.
    Последний раз редактировалось jim; 25.09.2025 в 21:49.
    Like a bright light on the ХORIZON
    Shining so bright, he'll get you flying

  3. #53

    Регистрация
    05.06.2022
    Адрес
    г. Минск, Беларусь
    Сообщений
    27
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Давай, в качестве доказательства работы твоего гениального метода, ты напишешь простейший "Hello, world" на асме, без использования функций из пзу.

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

    jim(23.09.2025)

  4. #54

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jim Посмотреть сообщение
    Давайте посмотрим на цифры.
    а давайте сначала научимся правильно считать

    Цитата Сообщение от jim Посмотреть сообщение
    1. Разовый overhead
    Параметр Прерывание SwapSet
    Время переключения ~150 тактов ~192 такта
    не "~192", а "от 223" (не забываем стоимость вызова + еще, возможно, альтернативные)
    не "~150", а может быть и намного меньше (сохранение не сразу, ранние проверки и выход)

    Цитата Сообщение от jim Посмотреть сообщение
    2. Суммарный overhead
    Параметр Прерывание SwapSet
    Частота вызова 50 раз/сек (кадр) или 1000+ раз/сек (таймер) Несколько раз за программу
    Суммарные траты 7 500 тактов/сек (50 Гц) или 150 000 тактов/сек (1 кГц) ~1000 тактов за всё время работы

    Здесь всё очевидно: прерывания стабильно «съедают» тысячи тактов каждую секунду, SwapSet же — копейки за весь прогон программы.
    эээ, минуточку! как это "несколько раз за программу"?
    почему количество переключений "независимо от места" оказалось вдруг НАСТОЛЬКО ограничено?
    что за новости, почему ВНЕЗАПНО стало нельзя иметь over 9000 "независимых мест" в секунду??

    Цитата Сообщение от jim Посмотреть сообщение
    Цель SwapSet
    SwapSet — не для tight loop и не для экономии каждого такта. Его задача:
    • изолировать функции друг от друга;
    • дать каждой задаче «свои регистры»;
    • сделать код предсказуемым и модульным.
    ломишься в открытую дверь, это всё и так уже есть

    Цитата Сообщение от jim Посмотреть сообщение
    Цена в 192 такта оправдана, если цель — ясность и надёжность архитектуры.
    продолжение бессмысленной трескотни в каких единицах измеряется "ясность и надёжность архитектуры"?
    и да, кстати, di в произвольном месте это лишний риск пропуска прерывания, всякие музончики пострадают - просто охренительная "надёжность"

    Цитата Сообщение от jim Посмотреть сообщение
    Если 192 такта в SwapSet — это «слишком дорого», тогда давайте для честности все дружно откажемся и от прерываний.
    не откажемся, потому что прерывания бывают нужны и сильно облегчают жизнь программисту, а рандомные мусорные вызовы - не нужны и не облегчают

    Цитата Сообщение от jim Посмотреть сообщение
    Ведь там вообще неконтролируемые тысячи тактов уходят каждую секунду.
    снова мимо, контролируемые и не каждую
    Прихожу без разрешения, сею смерть и разрушение...

  5. #55

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Честно говоря думаю ниппер просто троллит, ну невозможно быть настолько тупым. Зачем тут тоже непонятно, площадка не та, возможно троллинг в телеграмчиках не вывозит. Непонятно только где доблестные бананаторы, перебанившие множество действительно увлеченных спектрумистов, иногда через чур эмоциональных, и не замечающих это. Простыни похожи на чатгпт, только нейросетка может написать что 40 тактов это 20 циклов лдира. Сама тема конечно забавная но никакого отношения к спектруму и к z80 не имеет, чисто стеб.

  6. #56

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот опять
    про лдир тс оперативно удалил строчку из своего поста

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

    Цитата Сообщение от krt17 Посмотреть сообщение
    Простыни похожи на чатгпт
    чуть другой чат бот, но сути не меняет
    Цитата Сообщение от jim Посмотреть сообщение
    Ради прикола попросил LeChat придумать применение моему методу. Потом просто передумал публиковать.

  7. #57

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Так что с желанием видеть только хвалебные посты от "поклонников" неэффективного метода это не сюда.

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

    SoftLight(18.09.2025)

  8. #58

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jim Посмотреть сообщение
    эта тема моя
    А форум - наш!

    Эти 2 пользователя(ей) поблагодарили b2m за это полезное сообщение:

    jim(23.09.2025), LW(18.09.2025)

  9. #59

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Честно говоря думаю ниппер просто троллит, ну невозможно быть настолько тупым. Зачем тут тоже непонятно, площадка не та,
    или же платформа не та - полагаю, что столь нестандартно-сумрачный гений больше пригодился бы на БК
    Прихожу без разрешения, сею смерть и разрушение...

  10. #60

    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,198
    Спасибо Благодарностей отдано 
    40
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    103 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от backa Посмотреть сообщение
    Рабочий вариант - делал для AVR когда-то очень давно на ассемблере - работало как часики)))
    Окромя вышеописанного жонглирования состоянием регистров - весь цимес, уложиться в одно прерывание для подпрограммы обработки im2.
    Оттого, только три режима прерываний (два с половиной, по сути) и только один набор альтернативных регистров.

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

    Цитата Сообщение от jim;1218440[b
    3. Разный контекст использования[/b]
    • Прерывания — вынужденная плата за связь с железом. Все смирились: «так уж устроен Z80».
    Срачи, по поводу производительности в количестве тактов, между прерываниями - пассы в пользу "сирых и убогих"? Так и запишем.

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

    Цитата Сообщение от jim Посмотреть сообщение

    4. Цель SwapSet
    SwapSet — не для tight loop и не для экономии каждого такта. Его задача:
    • изолировать функции друг от друга;
    • дать каждой задаче «свои регистры»;
    • сделать код предсказуемым и модульным.
    Вся беда , в том, что на данном этапе мы натыкаемся на зарождение многоядености для ЦП,и распараллеливания зачачь при написании программ в частности. Из-за чего, висли задачи в разных ядрах на первых порах многозадачности.
    Последний раз редактировалось null_device; 18.09.2025 в 21:36.
    Когда есть, но не знаешь где - это все равно, что нету.

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

    jim(23.09.2025)

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя

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

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

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

Ваши права

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