Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср июн 20, 2018 03:26

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Системные регистры форт-процессора
СообщениеДобавлено: Пт дек 16, 2011 01:25 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
В раздумьях над тем, как бы выкроить пару опкодов для компактной системы команд, пришла в голову мысль о дополнительном адресном пространстве для системных регистров форт-процессора. С одной стороны, стековая машина сама по себе не подразумевает каких-то системных регистров. С другой, при технической реализации они так или иначе образуются. Приведенные ниже слова могут быть представлены в виде связки N SYSTEM@, где N - номер регистра, а SYSTEM@ (название условное) - слово, кладущее на стек содержимое соответствующего аппаратного регистра, отвечающего за данное состояние.

PC
DEPTH
RDEPTH
R@
I
J

Пара >R R> может быть заменена на >R RDROP, но работу со стеком возвратов не удается свести к одной команде с помощью такого приема. Выход, впрочем есть, но он немного "хакерский" - чтение регистра по R@ одновременно снимает число со стека возвратов. Вернуть его туда можно через DUP >R.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Пт дек 16, 2011 04:20 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Кстати, еще один моментик, который может помочь сократить набор.

Пусть "системных регистров" у нас 8 штук, не важно, как они называются, просто 8 регистров, которые надо уметь адресовать, читать и писать.

Если система команд 4-хбитная (к примеру), то любое обращение к такому регистру требует два кода - код команды и адрес. 4-хбитный адрес позволяет задавать одновременно и один из 8 регистров и операцию с ним (чтение/запись).

В таком случае, на системные регистры нужен всего один опкод-префикс -
SYSTEM*. И к нему опкод-адрес 0..7 - чтение одного из 8 регистров, 8..15 запись в один из регистров.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Пт дек 16, 2011 15:10 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Пт дек 16, 2011 15:56 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Хищник писал(а):
Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.

Ну правильно в обоих случаях на стеке лежит сверху номер регистра( N ), который берется в качестве префикса, но не весь, а только три младших разряда, а старший разряд надо использовать в качестве недостающего для формирования опкодов 2-х команд
SYSTEM@ и SYSTEM! для положить на стек из сист рег. вместо N или взять два значения со стека для положить в сист. регистр.
В один такт при этом не влезть.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Пт дек 16, 2011 18:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Хищник писал(а):
Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.


В одном случае, она должна положить на стек содержимое регистра, в другом отправить одно данное со стека в регистр. И ничего лишнего... номер регистра в опкоде зашит и его "адрес" незачем на стек записывать.

По тактам - это ровнехонько один такт в любом случае.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Пт дек 16, 2011 18:43 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
chess писал(а):
в обоих случаях на стеке лежит сверху номер регистра( N ),


Нет-нет-нет... номер регистра берется из командного потока, и на стек его незачем класть - лишняя потеря времени...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 17:05 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Отобразим регистры на память, сэкономим опкод 8)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 17:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
dynamic-wind писал(а):
Отобразим регистры на память, сэкономим опкод

Мультиплексор сложнее получается, надо еще диапазон адресов проверять. Сейчас критичная по времени цепь проходит как раз от стека к стеку - т.е. через АЛУ, декодер команд, мультиплексор и т.д. Но это тоже вариант. Я вообще сейчас объединил адресные пространства памяти и IO.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 19:15 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
dynamic-wind писал(а):
Отобразим регистры на память, сэкономим опкод


"Экономика должна быть экономной" (с)...
Если работа с регистрами не будет отличаться от работы с памятью, зачем такие регистры? Проще сразу с памятью работать.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 19:16 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Хищник писал(а):
Но это тоже вариант.


Вряд ли это вариант. Ведь регистры еще в процессе работы команд модифицируются, а значит, это дополнительные два цикла с памятью
в нагрузку а на команду...

Разве что изначально полагать, что командный цикл - это 3-4 обращения к памяти...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 19:25 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
WingLion писал(а):
Вряд ли это вариант. Ведь регистры еще в процессе работы команд модифицируются, а значит, это дополнительные два цикла с памятью
в нагрузку а на команду...

Разве что изначально полагать, что командный цикл - это 3-4 обращения к памяти...

Нет, не реализовывать их в памяти, а просто отобразить на адресное пространство. Тогда при выполнении @ мультиплексор подсунет вместо выхода памяти выход регистра.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 19:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Хищник писал(а):
Нет, не реализовывать их в памяти, а просто отобразить на адресное пространство. Тогда при выполнении @ мультиплексор подсунет вместо выхода памяти выход регистра.


да, но для этого @ надо будет на стек целый адрес положить, а это некузяво...
Лучше в команде адресовать нужный регистр, дополнительным полем / параметром / префиксным кодом и т.п. Он ведь всяко короче полного адреса. А тогда в память отражать - лишнее.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 19:45 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
А у меня сейчас 0-31 кладутся на стек одним тактом. :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 20:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Хищник писал(а):
А у меня сейчас 0-31 кладутся на стек одним тактом.


одной командой? Это формально то же самое, что команда с префиксом... только префикс получается - короткий литерал ;)

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Системные регистры форт-процессора
СообщениеДобавлено: Сб дек 17, 2011 21:07 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6328
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
WingLion писал(а):
одной командой? Это формально то же самое, что команда с префиксом... только префикс получается - короткий литерал

Именно. А регистры-то ведь такие, что особо часто их читать и не надо.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB