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

User Tag List

Страница 9 из 14 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 133

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

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

    По умолчанию

    Bolt, уж не помню что за зверь мне попадался, но у него сложение только устанавливало флаг переноса, и никогда не сбрасывало, а вот вычитание только сбрасывало и никогда не устанавливало. Были у него еще и команды сложения и вычитания с учётом переноса, но их логика была еще более странная для понимания. А еще там были однобитовые операции, если вы думаете, что они использовали флаг переноса, то облом - для них был предусмотрен отдельный флаг. Самое осмысленное, что он позволял делать это скопировать за две команды некоторый бит из одного регистра в другой. А вот если требовалось скопировать с инверсией, то это делалось только через какой-то хак, поскольку напрямую этот флаг инвертировать было нельзя.

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    еще раз: ну при чём тут carry? когда результат от его значения не зависит

    и у тебя там ДВА вычитания, так результатом первого или второго должен быть H?
    У меня два, а в АЛУ одно.
    Если подать на первый вход 0x00, на второй вход подать число, и в младший разряд ещё сигнал переноса "из ниоткуда", на выходе получим инвертированное значение и переносы во всех разрядах. Не знаю как именно это происходит в Z80.

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

    blackmirror, меня старые процессоры вообще поражают своей "CISC-овостью", а x86 в этом плане уже никто даже не пытается догнать, все RISC что-то делают

  3. #83
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Если подать на первый вход 0x00, на второй вход подать число, и в младший разряд ещё сигнал
    ...то это нифига не равносильно дополнительному вычитанию единицы

    Цитата Сообщение от Bolt Посмотреть сообщение
    ещё сигнал переноса "из ниоткуда"
    в огороде бузина, а ПОСТОЯННЫЙ бит НИОТКУДА почему-то называется ПЕРЕНОСОМ

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

    (потому что гладиолус, наверно)))
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    ...то это нифига не равносильно дополнительному вычитанию единицы
    И чему же оно равносильно?

  5. #85
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    И чему же оно равносильно?
    как подсказывает нам кэп, вычитанию "n OR 1", которое равно самому же этому числу n при его нечётности
    Прихожу без разрешения, сею смерть и разрушение...

  6. #86
    Master
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    835
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    98
    Поблагодарили
    65 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тема застопорилась на недоразумениях. Что скажет мэтр Ynicky?
    За счёт чего вы будете вводить 32 битные коды операций? Специального префикса ( типа ld a,a)?
    В AMD 64 за префикс взяли команду inc рег. Можно взять за префикс ненужную команду, а дальнейшие кодировку операций в корне поменять.
    Я ж говорил, не надо точь в точь. Главное, чтобы программисту легче было переходить. Можно расширить аккумулятор до 32 бит, и сохранять его в стеке без флагового регистра. Флаговый регистр расширить до 32 бит, и то же отдельно от аккумулятора сохранять в стеке. Пары bc, de, hl сделать младшими словами 32 битных rbc, rde, rhll. Добавить ещё каких r4-r7. Добавить для контроля восьмибитных программ команды pushbc-pushhl-pushrw(сохранение слова из регистра),push alf( сохранение в стеке слова аналога af), ну и poprw соответственно.
    Покажите свою регистровую модель.

    Короче, надо делать разные системы команд для различных режимов. Вот механизм перехода из режима в режим. Процессор начинает работу в 32 битном режиме сразу. Если нужно перейти в восьмибитный режим, то устанавливает специальный бит перехода в 8 битную систему в флаговом 32 битном регистре и совержает jp. В восьмибитном режиме процессор выполняет только 8 битный код, расширение регистров отключено. Регистры b,c,c,e,h,a работают как независимые 8 битные регистры. Процессор работает в этом рожиме до спецкоманды trap32( например, ld b,b) и когда эта команда встречается, сохраняет 16 битный адрес возврата в стеке, переходит на специальный вектор прерывания, но уже в 32 битном режиме( флаг 8 битного режима сбрасывается), а оттуда можно уже заново дать ему задание в каком режиме дальше работать. Главное правило - системы команд режимов несовместимы! Процессор не может выполнять смесь команд из 8 и32 битных команд.
    Последний раз редактировалось Smalovsky; 19.02.2020 в 23:17.
    ¡Un momento, señor fiscal!


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

    Bolt (20.02.2020)

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

    По умолчанию

    Фантазия пока гуляет семимильными шагами, но на вопросы могу ответить.

    За счёт чего вы будете вводить 32 битные коды операций? Специального префикса ( типа ld a,a)?
    Абсолютно новый набор операций...
    Главное, чтобы программисту легче было переходить.
    ...но более-менее совместимый на уровне ассемблера. В идеале хотелось бы вообще без изменений в исходном коде, но так не получится. Две основных причины - флаги (см. выше вопрос про упрощение) и 24-битная адресация.

    Можно расширить аккумулятор до 32 бит, и сохранять его в стеке без флагового регистра.
    Да.

    Флаговый регистр расширить до 32 бит, и то же отдельно от аккумулятора сохранять в стеке.
    Да, но тут пока жирный TODO.

    Пары bc, de, hl сделать младшими словами 32 битных rbc, rde, rhll. Добавить ещё каких r4-r7. Добавить для контроля восьмибитных программ команды pushbc-pushhl-pushrw(сохранение слова из регистра),push alf( сохранение в стеке слова аналога af), ну и poprw соответственно.
    Ну да, как вариант, основной набор и довесок для более точной трансляции старых исходников.

    Покажите свою регистровую модель.
    8 бит: W, A, B, C, D, E, H, L, J, K, IXH, IXL...
    16/32 бита: WA, BC, DE, HL, JK, IX, IY, IZ...
    Для 32 бит имена те же, но мнемоники с суффиксом, "ld.l BC,(DE)". Но можно и букву к имени регистра добавить.
    BC, DE, HL, JK - двойные. IX, IY. IZ - индексные. WA - аккумулятор.

    Короче, надо делать разные системы команд для различных режимов.
    Два режима. Основной - 8/16/32 бита, совместимый с Z80 по исходному коду. Плюс режим эмуляции Z80/ZX. Или, если удастся, вместо второго режима динамическая трансляция кода.

    Вот механизм перехода из режима в режим.
    Ой, вот тут стоп, не надо меня сбивать с мысли
    Дальнейшее описание в целом похоже. Только не "8 и 32", а "старый и новый". Чтобы не путаться, в новом же тоже есть 8 бит.
    Ещё круче будет если удастся сделать динамическую трансляцию, тогда второй набор вообще не нужен.

  9. #88
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Это "0x00-A-carry", carry=1.
    Цитата Сообщение от Lethargeek Посмотреть сообщение
    тогда уж 255-a
    Цитата Сообщение от Bolt Посмотреть сообщение
    0xFF - A
    При каком значении A появится перенос h? Никогда.

    0x00 - A - carry
    При каком значении A появится перенос h? Всегда.
    Цитата Сообщение от Lethargeek Посмотреть сообщение
    у тебя там ДВА вычитания
    Цитата Сообщение от Bolt Посмотреть сообщение
    У меня два, а в АЛУ одно.
    Пацаны, не поверите - НИ ОДНОГО...

    Вот смотрите, например, 74хх83 - микросхема полного сумматора.
    А назовите-ка пожалуйста партнумбер микросхемы ВЫЧИТАТЕЛЯ...
    И для чего нужен дополнительный код?

  10. #89
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    omercury, микросхемы нет, а операция - есть а я вообще про формулу говорил
    Прихожу без разрешения, сею смерть и разрушение...

  11. #90
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    а я вообще про формулу говорил
    Да это понятно, что с тебя, погромиста, взять.

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    omercury, микросхемы нет, а операция - есть
    Нету...

    Ещё раз:
    Цитата Сообщение от omercury Посмотреть сообщение
    для чего нужен дополнительный код?

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

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

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

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

Похожие темы

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

Ваши права

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