User Tag List

Показано с 1 по 10 из 75

Тема: SwapSet

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #12

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

    По умолчанию

    Вернемся к сути:
    SwapSet — изоляция регистров на Z80

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

    Суть метода:
    • Каждый набор регистров ("сет") хранится в памяти как блок из 8 байт (AF, BC, DE, HL).
    • Команда
      Код:
      SwapSet
      сохраняет текущие значения регистров в активный блок и загружает значения из нового блока.
    • Таким образом, вместо push/pop или обращения к стеку мы получаем мгновенную изоляцию контекстов.


    Плюсы:
    • Неограниченное количество наборов регистров (ограничение только по памяти).
    • Простое переключение между контекстами по имени:
      Код:
      ld ix, SetName
      call SwapSet
    • Локальные регистры изолированы: функция работает в своём наборе, не трогая основной.
    • Возможность прямой передачи аргументов в регистры нового сета без обращения к памяти:
      Код:
      ld ix, FunctionSet
      call SwapSet
      ld hl, arg1
      ld de, arg2
      call Function


    Минусы:
    • Медленнее по тактам, чем классический push/pop.
    • Задействует индексный регистр IX.
    • Увеличенный код вызова (
      Код:
      ld ix, ...; call SwapSet
      ).


    Применимость:
    • Эксперименты с архитектурой Z80.
    • Альтернативное структурирование кода без жёсткой привязки к стеку.
    • Потенциальная основа для байткод-машины с полной изоляцией контекстов.


    Пример использования:
    Код:
    ld ix, MainSet
    call SwapSet         ; активируем основной набор
    
    ld ix, FunctionSet
    call SwapSet         ; переключаемся на набор функции
    ld hl, arg1
    ld de, arg2
    call Function        ; вызов функции с аргументами в регистрах
    
    ld ix, MainSet
    call SwapSet         ; возвращаемся к основному набору
    Последний раз редактировалось jim; 23.09.2025 в 20:19.
    Like a bright light on the ХORIZON
    Shining so bright, he'll get you flying

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

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

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

Ваши права

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