User Tag List

Страница 3 из 14 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 133

Тема: Ядро с 32 битами и виртуализацией

  1. #21
    HardWareMan
    Гость

    По умолчанию

    Ynicky, а почему все регистры по сбросу в FF?

  2. #22

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Ynicky, а почему все регистры по сбросу в FF?
    Не все. PC, IFF1, IFF2, IM - в 0.
    Сейчас не помню, но где-то вычитал, что они по включению питания в z80 имеют эти значения.

  3. #23

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

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Не все. PC, IFF1, IFF2, IM - в 0.
    няз IR тоже надо занулить, а FFFF достаточно AF и SP, остальные не определены
    это в случае нормального резета, а то есть еще и "особенный"
    http://www.primrosebank.net/computer...cial_reset.htm
    Прихожу без разрешения, сею смерть и разрушение...

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

    andrews(12.01.2020), NEO SPECTRUMAN(12.01.2020)

  4. #24

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Симулятор вытягивает 10 МГц. Z80 почти готов, ПЗУ стартует, надо клавиатуру прикрутить.

    Пока с новыми инструкциями мыслю "ортогонально", не экономя байты, потом буду пытаться уменьшать и ускорять.

    "add BC,0x12345678" занимает 8 байт. Такты пока не считаю вообще

    Схема "классическая": B, C, вместе BC, плюс старшие байты, 2 штуки.
    Инструкции Z80 имеют доступ к B, C, BC. Новые инструкции по умолчанию имеют доступ к 32-битному BC, префиксами можно урезать до 16 и 8 бит. Доступ к регистру B и к старшим байтам буду потом по потребности думать отдельно.

    Возник вопрос.
    Как назвать 32-битные регистры?

    EAA, EBC, EDE, EHL, EIX... (extended)?
    WAA, WBC, WDE, WHL, WIX... (wide)?
    QAA, QBC, QDE, QHL, QIX... (quad byte)?

  5. #25

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

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Как назвать 32-битные регистры?
    Если хочется аналогию с интелом, то extended:
    bh B
    bl C
    bx BC
    ebx EBC

  6. #26

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Или логично, как в Neon-e:
    Код:
    [S0  S1  S2  S3]
    [  D0  ][  D1  ]
    [      Q0      ]
    Больше игр нет

  7. #27

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

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    EAA, EBC, EDE, EHL, EIX... (extended)?
    я за extended

    да и q w менее удобны для набора

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

    Цитата Сообщение от Bolt Посмотреть сообщение
    EAA,
    вот это выглядит несколько странно

    тк у А нет 16 битного....
    ну кроме AF

    может просто EA ?
    ну и нужно думать как работать со 2-м байтом ааAa
    который не адресуется ни второй половиной аа
    ни средствами старых команд z80

    и нужно этот 16битный АА как то обзывать
    детекчу у х86 w для обозначения word'
    но WA смотрится не очень

    ну и нужен какойнить AH...
    Последний раз редактировалось NEO SPECTRUMAN; 16.01.2020 в 12:08.

  8. #28

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Если хочется аналогию с интелом
    Да там и так куда ни поверни - везде Интел получается

    Цитата Сообщение от svofski Посмотреть сообщение
    Или логично, как в Neon-e:
    Хочется сохранить названия регистров.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    я за extended
    ...
    может просто EA ?
    Может.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ну и нужно думать как работать со 2-м байтом ааAa
    который не адресуется ни второй половиной аа
    ни средствами старых команд z80
    и нужно этот 16битный АА как то обзывать
    Там ещё много вопросов по ходу дела...
    Надо, наверное, начать ассемблер. Там сразу станет понятно чего не хватает.
    Натыкать костылей, запустить, потом думать как сделать по уму.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ну и нужен какойнить AH...
    Цитата Сообщение от Bolt Посмотреть сообщение
    Да там и так куда ни поверни - везде Интел получается
    - - - Добавлено - - -

    А вообще зачем нужен этот AH? Ну я ещё понимаю BC использовать как два 8-битных, или EBC как два 16-битных...

    Можете пример привести где это потребуется?
    Последний раз редактировалось Bolt; 16.01.2020 в 18:40.

  9. #29

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

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    А вообще зачем нужен этот AH? Ну я ещё понимаю BC использовать как два 8-битных, или EBC как два 16-битных...

    Можете пример привести где это потребуется?

    а сходу наверно нет

    будет затык если понадобится обработать 8 битными командами второй младший байт
    который не получится отколупать из 32 битного числа


    если подумать роль 16 битного А
    выполняет пара hl
    может и 32 битные пусть работают только с ebc ede ehl ?
    может еще добавить регов

  10. #30

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если народ уже добрался до команд длиной по 8 байт, то есть некоторые способы более компактного кодирования. Будем считать, что адрес и данные имеют разрядность по 16 бит и попробуем запихать в них 4 команды (про байты для примера забудем). Первая идея, это сделать 4 перезагружаемых таблицы и по группе в 4 разряда выбирать команду в длинном формате (или сразу микрокод). Но это много ресурсов и мало толка, поэтому попробуем закодировать команды честно. Сделаем 4x2 устройств, каждое выполняет свою операцию и записывает результат в регистр - он же первый операнд для следующей операции, то есть его кодировать не нужно. Для максимальной ортогональности вторым операндом будет любое из устройств и на его кодирование нужно 3 бита. Последний бит будет будет выбирать какое из двух устройств работает в данном такте, а какое отдыхает. Если вторым операндом оказывается это же устройство, то может выполняться какая-то специальная операция, к примеру обнуление регистра для устройства OR или установка в -1 для AND. Список операций выполняемых устройствами может быть к примеру таким:
    SUB1/ADD
    SUB2/NOR
    LD3/ST
    LD4/LDI/JMP(условный)
    Операции ADD/SUB добавляют/вычитают что-то к своему регистру, при ссылке на себя каких-то особых действий не требуется. NOR просто пример побитовой операции, вместо него и ADD вполне может оказаться более полезным что-то другое. Операции LD в свой регистр загружают данные из памяти, а адрес берут из указанного в команде регистра, особых действий при ссылке на себя для них тоже не требуется, хотя можно что-то и придумать. Для операции ST не хватает второго операнда, поэтому операнд указывает сохраняемые данные, а адрес будем брать к примеру из SUB1. Дополнительно данные копируются в связанный с ST регистр, на случай если кому-то вдруг опять понадобятся.
    Для команды JMP ссылка на себя превращает её в команду LDI которая загрузит следующее слово программы просто как константу. Остальные значения могут, либо указывать один из флагов формируемых устройствами, а адресом берём загруженное LDI. Или флагом всегда будет перенос к примеру из SUB2, тогда адрес перехода можно будет брать из регистров.

    Ну а если не экономить биты, то можно к примеру поделить 64 бита на 16 групп по 4 бита, и сделать 16 таблиц по 16 ячеек как в первом варианте. Тогда можно будет выполнять по 16 операций за такт, хотя конечно не все из них будут полезны для вычислений.
    Последний раз редактировалось blackmirror; 17.01.2020 в 21:47.

Страница 3 из 14 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 465
    Последнее: 03.01.2020, 07:15
  2. Ответов: 16
    Последнее: 02.08.2005, 12:20

Ваши права

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