User Tag List

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя
Показано с 31 по 40 из 75

Тема: SwapSet

  1. #31

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

    По умолчанию

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

    Цитата Сообщение от jim Посмотреть сообщение
    скорее говорит о попытке самоутвердиться за счёт новичков (или тех, кого вы такими считаете), чем о настоящем профессионализме.
    Я не претендую на абсолютную истину и не запрещаю пользоваться «отточенными подходами». Но и право на собственные эксперименты никто не отменял. Если вам это кажется ерундой — просто пройдите мимо, без демонстрации пренебрежения.
    Это открытый форум, а не личный фан-сайт, на котором можно самоутверждаться до посинения. Выступаешь с предложением чего-либо - будь готов получить вопросы и критику. Изобрёл велосипед - обоснуй квадратные колёса. Не согласен, не умеешь обосновать? Так никто не запрещает мимо пройти.

    Цитата Сообщение от jim Посмотреть сообщение
    SPARC
    как что-то хорошее

    Цитата Сообщение от jim Посмотреть сообщение
    Аргументы передаются не через память, а напрямую в регистрах нового набора после переключения:
    Цитата Сообщение от jim Посмотреть сообщение
    ld hl, arg1
    ld de, arg2 ; сразу положили аргументы в "in"-регистры
    call Function
    Так это же "стандартный подход" и есть (один из, старше чем сам z80). Только, уж конечно, без неэффективных "переключений" - когда нужно, либо сохраняют значения регистров в стек/переменные, либо ниже прямо в ld-команды.
    Прихожу без разрешения, сею смерть и разрушение...

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

    jim(16.09.2025), null_device(16.09.2025)

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

  3. #32

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Так это же "стандартный подход" и есть (один из, старше чем сам z80). Только, уж конечно, без неэффективных "переключений" - когда нужно, либо сохраняют значения регистров в стек/переменные, либо ниже прямо в ld-команды.
    А я не спорю, что это стандартный подход. Я просто взял уровень выше, что если бы у z80 было больше регистров? Это не оптимизация, это эксперимент, я уже об этом говорил. И сравнение со SPARC и окнами регистров появилось случайно, только потому что обнаружилось некоторое сходство в подходе. Я не претендую на то что это прямо уж революция. Неужели никому не было интересно оторваться от того что есть и представить другую архитектуру для z80.
    Мне вот интересно написать транслятор байткода для z80 например. Из преимуществ полная перемещаемость и компактность, даже по сравнению с нативным кодом. Да я может еще более гик чем вы.

  4. #33

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

    По умолчанию

    Очень интересно, но нифика непонятно...
    Зачем заменять push/pop или ld (nn),reg/ld reg,(nn) на процедуру, которая занимает место это раз, и тратит туеву кучу тактов это два?
    Да еще портит индексный регистр...

    Даже если предположить некую "многозадачность", то тут уж сохранять все регистры, включая индексные и SP, назначать для каждой задачи свой стек, да до кучи сохранять общие для задач переменные.
    А такой способ... Ну такое себе. Трата памяти и тактов.

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

    Цитата Сообщение от jim Посмотреть сообщение
    речь не о многозадачности. всего лишь структурирование кода меньше очевидных push/pop (код чище)
    Видать большие проекты не писали? Когда идет гонка за каджым байтом/тактом, а зачастую и за тем, и за другим одновременно?

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

    jim(16.09.2025)

  5. #34

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

    По умолчанию

    Цитата Сообщение от LW Посмотреть сообщение
    Очень интересно, но нифика непонятно...
    Зачем заменять push/pop или ld (nn),reg/ld reg,(nn) на процедуру, которая занимает место это раз, и тратит туеву кучу тактов это два?
    Да еще портит индексный регистр...

    Даже если предположить некую "многозадачность", то тут уж сохранять все регистры, включая индексные и SP, назначать для каждой задачи свой стек, да до кучи сохранять общие для задач переменные.
    А такой способ... Ну такое себе. Трата памяти и тактов.
    В том то и дело, что мне это тоже интересно) Когда ты используешь push/pop ты занял стек и тебе нужно помнить,что ты туда положил, чтобы потом вынуть. В данном методе стека как такового нет. Регистры хранятся в кусочках памяти по 8 байт и к ним всегда можно вернуться переключением, а вот это самое интересное. Если не думать о стеке, то в памяти можно хранить неограниченное количество контекстов к которым можно возвращаться простым переключением по имени сета регистров.
    Для чего это использовать? Для всего что подскажет фантазия.
    здесь не спроста использованы инструкции push и pop для сохранения и восстановления регистров они короче по тактам чем прямое сохранение/восстановление из памяти. (10-11 против 16-20) а индексный регистр задействован для чистоты чтобы сохранялся основной набор. и это не push/pop это именно swap более медленный аналог exx, ex af,af'. его единственное преимущество неограниченные наборы основных регистров, которые можно выбирать в любой момент.

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

    Цитата Сообщение от LW Посмотреть сообщение
    Видать большие проекты не писали? Когда идет гонка за каджым байтом/тактом, а зачастую и за тем, и за другим одновременно?
    писали. а сейчас просто экспериментирую. в этом и есть косность мышления когда ты себя начинаешь ограничивать, устанавливать правила при написании кода. это не дает мыслить свободно и твой код становится, как ни грустно, типичным ((
    Последний раз редактировалось jim; 16.09.2025 в 00:24.
    Like a bright light on the ХORIZON
    Shining so bright, he'll get you flying

  6. #35

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

    По умолчанию

    стэк это push/pop 2 байта/21 такт на пару
    память это ld (nn),reg/ld reg,(nn) это 6 байт/32(26) тактов для HL, для DE/BC несколько больше
    ваш вариант ld ix,addr: call Swap это 7 байт/31 такт только на вызов процедуры, плюс сотня другая тактов займет сама процедура, плюс порча ix
    сохранение af,bc,de,hl одномоментно нужно очень редко
    И какой вариант лучше? Думаю тот что занимается меньше места и быстрее

    И в чём пробедема думать о стеке? Об этом думать всё равно придётся.

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

    В данном методе стека как такового нет
    Стэк есть всегда

  7. #36

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

    По умолчанию

    Цитата Сообщение от LW Посмотреть сообщение
    Стэк есть всегда
    это не догма. я им жонглирую в своем примере.
    сохраняется общий стек для всех наборов, но push/pop для регистров отсутствует.

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

    Цитата Сообщение от LW Посмотреть сообщение
    стэк это push/pop 2 байта/21 такт на пару
    память это ld (nn),reg/ld reg,(nn) это 6 байт/32(26) тактов для HL, для DE/BC несколько больше
    ваш вариант ld ix,addr: call Swap это 7 байт/31 такт только на вызов процедуры, плюс сотня другая тактов займет сама процедура, плюс порча ix
    сохранение af,bc,de,hl одномоментно нужно очень редко
    И какой вариант лучше? Думаю тот что занимается меньше места и быстрее
    я не спорю что можно написать короче и быстрее. я предложил механизм. если интересно оптимизировать можно всегда.

    Мой подход:
    минусы:
    неэффективно по скорости

    плюсы:
    памяти - копейки (8байт на сет)
    количество наборов регистров не ограниченно (ограниченно только свободной памятью)
    изоляция регистров в сете (они не испортятся при вызове функции из другого сета)
    переключение между сетами элементарное
    Последний раз редактировалось jim; 16.09.2025 в 02:15.
    Like a bright light on the ХORIZON
    Shining so bright, he'll get you flying

  8. #37

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

    По умолчанию

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

    Цитата Сообщение от jim Посмотреть сообщение
    компактный контейнер для переменных
    бред
    Цитата Сообщение от jim Посмотреть сообщение
    все переменные игрока хранятся в одном блоке памяти (8 байт)
    как громко. все переменные игрока, аж 8 байт
    Цитата Сообщение от jim Посмотреть сообщение
    Возврат к предыдущему состоянию в текстовых редакторах
    ну да, ну да, в 8 байт так дофига можно вместить, что аж последнее состояние редактора
    Цитата Сообщение от jim Посмотреть сообщение
    Ограниченный размер стека.
    ага, чем ограничен то? ну разве что памятью всего 64кб её у нас

    и т.д. и т.п.

    вобщем весь этот бред даже комментить не буду

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

    З.Ы. ох как нехорошо после моего коммента вычищать портянку своего поста до двух куцых абзацев
    еще бы один минус в карму влепил бы за это

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

    cafedead(24.09.2025)

  9. #38

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jim Посмотреть сообщение
    Но потенциал у идеи я считаю все же есть. Просто нужно найти применение.
    Лучше один раз сделать, чем сто раз сказать.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  10. #39

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

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    Лучше один раз сделать, чем сто раз сказать.
    воистину!
    Like a bright light on the ХORIZON
    Shining so bright, he'll get you flying

  11. #40

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Какой-то беспредметный $pa4, ну если чего не так - ну ведь во "Флейм" можно перекинуть эту тему вроде - и пусть себе будет...

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя

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

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

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

Ваши права

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