Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 14:51

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - упихнуть в 4 бита 35 команд
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
однако, более точно, если они НЕ ПОСЛЕДНИЕ в группе.
Конечно! Я рассматривал упаковку в байты... ;)
Сообщение Добавлено: Пн дек 21, 2009 01:41
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Только если они "первые" в группе Wink А так - обычные Wink

однако, более точно, если они НЕ ПОСЛЕДНИЕ в группе.
Сообщение Добавлено: Пн дек 21, 2009 01:38
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
Если говорить точнее, в таком случае получается, что IF, JMP и CALL - попросту префиксные команды!
Только если они "первые" в группе ;) А так - обычные ;)

WingLion писал(а):
RET:3 - CALL #NN = короткий CALL по индексу
А для этого лучше выделить несколько кодов, при этом одно из битовых полей команды будет индексом #NN
Сообщение Добавлено: Пн дек 21, 2009 01:35
  Заголовок сообщения:   Ответить с цитатой
А еще, можно сделать прямое кодирование для исполнения подобной префиксной команды.
Просто назначить, что RET:XXX = последовательность (подпрограмма) от 4-х до 8-и ("простых" 4-хбитных) команд (заранее записанная в некий 32-разрядный регистр)
Сообщение Добавлено: Пн дек 21, 2009 01:33
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Получается, что префиксы можно не выделять!

Если говорить точнее, в таком случае получается, что IF, JMP и CALL - попросту префиксные команды!

п.с. a вот RET:XXX - действительно интересно
Можно даже сразу объединить CALL и RET пoд один код команды
RET:0 - это RET,
RET:1 - CALL
RET:2 - RET-CALL = NEXT
RET:3 - CALL #NN = короткий CALL по индексу (а таблица индексов (16 шт) прямо в памяти с адреса 0x00000000)

в этот же список можно и JMP с IF вставить.
RET:4 - IF
RET:5 - JMP = LIT R> RET
RET:6 - EXECUTE = R> RET


Получается совсем здорово - высвобождается целых два кода! ;)

Короче, отличная мысля для 4-хбитника!
Сообщение Добавлено: Пн дек 21, 2009 01:19
  Заголовок сообщения:   Ответить с цитатой
В варианте с использованием последовательностей команд как префикса для одной такой команды:
16 + 15 =31 ,
для 2х:
16 + 2*15 =46 ;)
Сообщение Добавлено: Пн дек 21, 2009 01:17
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Таким образом, байт с командами RET : XXX можно рассматривать как команду с префиксом! И добавить еще 15(!) других команд!

не катит. Это будет именно префикс, я говорил про совсем другое.
Сообщение Добавлено: Пн дек 21, 2009 01:16
  Заголовок сообщения:   Ответить с цитатой
вопрос писал(а):
как получилась цифра 35?

приблизительное количество форт-примитивов для комфортной работы.
в принципе может быть и больше, только тогда выше шанс промаха (удлиннения команды за счет лишнего префикса)
Сообщение Добавлено: Пн дек 21, 2009 01:13
  Заголовок сообщения:   Ответить с цитатой
как получилась цифра 35?
Сообщение Добавлено: Пн дек 21, 2009 01:07
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
как можно упихать в 4 бита 35 команд без потери плотности кода и скорости исполнения.
Там в общем случае даже больше возможностей получается - суперинструкции даже можно сделать. Но без нормального средства анализа я в эту область не полезу! ;)

А вот более простой вариант можно реализовать!
Идея в том, чтобы использовать некоторые последовательности команд, которые не имеют смысла для 4х битного кода, упакованного в байты.
Например, если первая команда (в смысле исполнения, а не кодирования в байте!) RET или JMP , то следующая команда никогда не будет выполена! :)
(Вариант, когда выполнение переходов откладывается до окончания команды, возможно, будем рассматривать позже и обсуждать в другой ветке. ;) )
Таким образом, байт с командами RET : XXX можно рассматривать как команду с префиксом! И добавить еще 15(!) других команд! ;) (Считая, что RET : NOP - это одна команда со смыслом RET ).
Аналогично для JMP и CALL . Если в основном наборе есть IF , то и он тоже может быть таким же!

Получается, что отдельные коды для префиксов можно и не выделять! :)
Такое использование "кодового пространства" будет занимать меньше места в коде, чем даже макроподстановка невошедших в примитивы слов с использованем последовательностей реализованных примитивов.
Сообщение Добавлено: Пн дек 21, 2009 00:59
  Заголовок сообщения:   Ответить с цитатой
конкретную схему можно как-то нарисовать?
Сообщение Добавлено: Вс дек 20, 2009 22:58
  Заголовок сообщения:   Ответить с цитатой
dynamic-wind писал(а):
и что некоторые "маловероятные" команды нельзя закодировать после данной.

можно, но через специальный нейтральный префикс (nop).
Сообщение Добавлено: Вс дек 20, 2009 22:43
  Заголовок сообщения:   Ответить с цитатой
Вообще-то да, если вместо 4-входовой ПЛМ поставить 8-входовую, разницы в быстродействии практически никакой.
А БОЛЬШИМ будет кодогенератор, которому надо знать, что каждая команда имеет опкод, зависящий от предыдущего, и что некоторые "маловероятные" команды нельзя закодировать после данной.
Сообщение Добавлено: Вс дек 20, 2009 22:40
  Заголовок сообщения:   Ответить с цитатой
dynamic-wind писал(а):
Скорость исполнения автоматически снизится из-за сложного декодера

Я не думаю, что он будет таким уж сложным и медленным,
он будет скорее БОЛЬШИМ,
что не очень приятно при реализации в ПЛИСе.
Сообщение Добавлено: Вс дек 20, 2009 22:17
  Заголовок сообщения:   Ответить с цитатой
Скорость исполнения автоматически снизится из-за сложного декодера :evil:
Сообщение Добавлено: Вс дек 20, 2009 22:10

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


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