User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 180

Тема: 32-разрядный процессор, полностью совместимый с архитектурой PDP-11.

Комбинированный просмотр

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

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Такой код - в любом режиме будет работать одинаково: ...
    а такой?
    Код:
    ...
    MOV (R1)+,(R2)+
    MOV (R1)+,(R2)+
    MOV (R1)+,(R2)+
    MOV (R1)+,(R2)+
    MOV (R1)+,(R2)+
    MOV (R1)+,(R2)+
    ...
    вот ЧТО здесь пересылается?
    Прихожу без разрешения, сею смерть и разрушение...

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

  3. #2

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    вот ЧТО здесь пересылается?
    Пересылаются одиночные слова ( 16-разрядные ) и регистры инкрементируются на 2. Чтобы пересылались двойные слова и регистры инкрементировались на 4 - у кода команды в старшем слове должен стоять бит "двусловного размера операндов". На каком основании компилятор решит ставить такой бит - зависит от разработчика компилятора. Вариантов множество - можно для пересылки двойного слова использовать название команды MOVD, можно для фрагмента кода задать режим компиляции "двусловный размер операндов для старых мнемоник" и т.д и т.п. Но если ничего не предпринимать - компилятор интерпретирует такие мнемоники как команды пересылки 16-разрядных слов.

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

    Цитата Сообщение от b2m Посмотреть сообщение
    А если сделать так: просто расширить регистры и шину адреса/данных до 32-х бит, а Legacy команды при записи будут выдавать ноль в старших 16 битах. С точки зрения программиста это будет выглядеть так, как будто ОЗУ и ПЗУ теперь двухслойное, в первом слое хранятся 16-битные данные, во втором - дополнительные старшие 16 бит. Если второй слой содержит только нули, то будет выполняться 16-битная программа, но если там не нули, то это 32-х битные команды.
    Проблема в том, что архитектура допускает использование абсолютных адресов. При 32-разрядном абсолютном адресе - он содержит нули в старшем слове только для первых 64К адресов. А у нас код должен исполняться одинаково в любом месте адресного пространства.

    Если первые 64К адресного пространства занимает область векторов, то как следующий код может не иметь битов ни в одном старшем слове:

    Код:
    	MOV	#MES, R0
    	.PRINT
    	HALT
    
    MES:	.ASCIZ	/Hello from 32-bit address space !!!/

  4. #3

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если первые 64К адресного пространства занимает область векторов
    Можно сделать и так, что при выполнении Legacy-команды старшие 16 бит регистра PC не будут модифицироваться, тогда можно под 16-битный процесс отводить любую страницу в 64Кб.

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

    Так будет даже правильнее, когда Legacy-команды не трогают старшие 16 бит любых регистров.
    При выполнении Legacy-команды точно также, как при записи старшие 16 бит шины данных содержат нули, старшие 16 бит адреса должны выдавать старшие биты регистра PC.
    Последний раз редактировалось b2m; 14.09.2017 в 21:47.

  5. #4

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    тогда можно под 16-битный процесс отводить любую страницу в 64Кб.
    Для 16-битных процессов в архитектуре есть специальный режим абсолютной совместимости с PDP-11, поэтому сейчас речь только о 32-битных процессах, в любом месте адресного пространства которых может исполняться легаси-код.

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

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Вот именно. Только вот какая незадача, по задумке автора 16-битного кода сей фрагмент мог из разных мест вызываться для разных действий, для пересылок как инструкций, так и слов данных. Или даже смешанного куска. Но в 32-битном режиме размер инструкций изменился, а данных - нет.
    Именно так, поэтому полная совместимость невозможна В ПРИНЦИПЕ.
    Последний раз редактировалось Patron; 14.09.2017 в 22:21.

  6. #5

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Как при этом данные адресуются?
    Также как и раньше. В том-то и идея, что нет разницы ни для 16-битного, ни для 32-битного кода.

    Цитата Сообщение от Patron Посмотреть сообщение
    Для 16-битных процессов в архитектуре есть специальный режим абсолютной совместимости с PDP-11
    Я предлагаю отказаться от режимов. Legacy-команды могут следовать вперемешку с другими командами. Это упростит архитектуру процессора. Несложно будет переделать то, что отреверсили, и долнить это новыми командами.

  7. #6

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Legacy-команды могут следовать вперемешку с другими командами.
    Легаси-команды - это точно такие же 32-разрядные команды, как и все остальные 32-разрядные команды. Абсолютная невозможность полной совместимости 16-разрядного кода с 32-разрядным режимом полностью снимает проблему совместимости. Для 16-разрядного кода - 16-разрядный режим, для 32-разрядного кода - 32-разрядный режим.

  8. #7

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

    По умолчанию

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

  9. #8

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Именно так, поэтому полная совместимость невозможна В ПРИНЦИПЕ.
    В ПРИНЦИПЕ возможна, если подумать. Но стоит ли таким путём её добиваться.

    Цитата Сообщение от b2m Посмотреть сообщение
    Также как и раньше. В том-то и идея, что нет разницы ни для 16-битного, ни для 32-битного кода.
    Поясни. Вот раньше был массив, к примеру, из 5 слов, в 16-битном режиме располагались в памяти друг за другом. А как будут в 32-битном располагаться?
    Прихожу без разрешения, сею смерть и разрушение...

  10. #9

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Вот раньше был массив, к примеру, из 5 слов, в 16-битном режиме располагались в памяти друг за другом. А как будут в 32-битном располагаться?
    Другой пример - вот раньше был массив, к примеру, из 5 байтов, в 16-битном режиме располагались в памяти друг за другом. А как будут в 32-битном располагаться?


    Цитата Сообщение от Lethargeek Посмотреть сообщение
    Как при этом данные адресуются?
    А как адресуются байты при выполнении следующего кода:

    Код:
    	MOVB	(R0)+,(R1)+
    	MOVB	(R0)+,(R1)+
    	MOVB	(R0)+,(R1)+
    	MOVB	(R0)+,(R1)+
    	MOVB	(R0)+,(R1)+
    Процессор читает с шины двойные слова и потом как-то внутри себя выковыривает из прочитанного отдельные байты. Но ведь байты не только читать, но и писать нужно. А как PDP-11 может писать отдельные байты при 16-разрядной шине - так и при 32-разрядной сможет.
    Последний раз редактировалось Patron; 14.09.2017 в 22:20.

  11. #10

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,807
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    80 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    В ПРИНЦИПЕ возможна
    Полная совместимость - это когда 16-разрядные и 32-разрядные команды выполняются вперемешку в одном адресном пространстве. Можно ввести 32-разрядную команду: "выполнить следующие Х слов в 16-разрядном режиме", но это не может решить проблему абсолютной адресации, потому что команды из 16-разрядного фрагмента должны иметь доступ к данным за пределами фрагмента.

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

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    и зачем они тогда нужны как отдельный класс? "упрощение переделки старых кодогенераторов" на вескую причину как-то не тянет, всё равно и новые генрировать
    Другая причина - помочь всем и каждому понять, почему полная совместимость старого двоичного 16-разрядного кода с 32-разрядным адресным пространством - в принципе невозможна.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Собрал комп полностью своими руками
    от scooby-do в разделе Зарубежные компьютеры
    Ответов: 15
    Последнее: 15.03.2025, 00:11
  2. Fuzebox - полностью открытая 8-битная игровая приставка
    от CityAceE в разделе Зарубежные компьютеры
    Ответов: 22
    Последнее: 09.03.2017, 15:35
  3. MSX и EPSON-совместимый принтер
    от ipkin в разделе MSX
    Ответов: 3
    Последнее: 01.12.2011, 19:23
  4. Ответов: 5
    Последнее: 20.06.2011, 03:18
  5. Куплю ZX совместимый компьютер.
    от billgilbert81 в разделе Барахолка (архив)
    Ответов: 19
    Последнее: 05.12.2008, 20:33

Ваши права

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