Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 18:05

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт май 18, 2007 22:04 
Не в сети

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
WingLion писал(а):
Для меня эта реалия - имеющийся Форт-процессор.

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

_________________
http://akps.ssau.ru/forth/


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: [OS] давайте хотя бы согласуем архитектуру ВМ и набор ко
СообщениеДобавлено: Пт май 18, 2007 22:13 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
forth@km.ru писал(а):
Например давать ли программе доступ к стеку возвратов

Я так понял из темы про модел памяти, что лучше не давать


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 18, 2007 22:13 
Не в сети

Зарегистрирован: Сб май 06, 2006 18:43
Сообщения: 400
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Это я вот к чему -- если эмулировать форт-процессор на писюке, много времени будет тратится на выколупывание битовых полей опкода и параметров команды масками/сдвигами, и на декодирование в случае если используются более сложный формат команд.
При этом придется при кодинге учитывать особенности модели форт-процессора который взят за основу типа адресации памяти, количества стеков итд. Это как взять bochs (виртуальный х86 комп)и ваять программы работающие в виртуалке, вместо того чтобы нарисовать свою виртуалку с удобной архитектурой, системой команд, виртуальными устройствами ввода/вывода итп

_________________
http://akps.ssau.ru/forth/


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
forth@km.ru писал(а):
Это я вот к чему -- если эмулировать форт-процессор на писюке, много времени будет тратится на выколупывание битовых полей опкода и параметров команды масками/сдвигами, и на декодирование в случае если используются более сложный формат команд.

От эмуляции предельная быстрота требуется не в первую очередь. Да и чего там двигать-то? Маска дает интересующее нас число, пусть оно принадлежит множеству чисел, умноженных на 2^N, что же из того? Это не мешает сделать case.


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
forth@km.ru писал(а):
А для твоего процессора наверняка опкод будет малобитным, и слепленным с параметром в один целл, и условный переход без удаления флагового числа со стека, или даже вариант -- выравнивания начала форт-слов на четные адреса, если выбранный целл четный значит это адрес вызова шитого кода, а если нечетный то это опкод команды (в купмане видел -- очень красиво)

Совсем не факт, что в моем процессоре байт-код не окажется зашит прямо ;) Путем реализации железной таблицы переходов - 256 адресов - это всего один EAB в ПЛИС-ине.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
WingLion писал(а):
Совсем не факт, что в моем процессоре байт-код не окажется зашит прямо Путем реализации железной таблицы переходов - 256 адресов - это всего один EAB в ПЛИС-ине.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 12:23 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
forth@km.ru писал(а):
много времени будет тратится на выколупывание битовых полей опкода и параметров команды масками/сдвигами, и на декодирование в случае если используются более сложный формат команд.

А для упрощения можно каждое поле команды хранить в отдельном байте - проще искать и смотреть. А сжатие полей команд сделать позже. Просто уделять бОльше внимания на то, что длина команд позже изменится и не привязываться жестко к их длинам. Ввести, например, несколько констант размеров - и работать через них.
На компиляторе такое упрощение не скажется - он покомандный и не привязан жестко к их длинам, особенности будут на "хаках" - изменениях команд... Но таких мест не должно быть много... ;) Надо будет их описать - и всё... :)

_________________
With best wishes, in4.


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

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

Вот, например, что у меня вчера получилось для разборки 4-хбитной команды:

<pre>
: STEP \ дешифрация команды и исполнение
CMD@ 01 AND
CMD@ 02 AND
CMD@ 04 AND
CMD@ 08 AND
IF
IF
IF
IF
30 1 AT-XY ." STOP "
\ NOP \ 0F
ELSE
NOP \ 0E
THEN
ELSE
IF
NOP \ 0D
ELSE
NOP \ 0C
THEN
THEN
ELSE
IF
IF
NOP \ 0B
ELSE
NOP \ 0A
THEN
ELSE
IF
NOP \ 09
ELSE
NOP \ 08
THEN
THEN
THEN
ELSE
IF
IF
IF
NOP \ 07
ELSE
NOP \ 06
THEN
ELSE
IF
NOP \ 05
ELSE
NOP \ 04
THEN
THEN
ELSE
IF
IF
30 1 AT-XY ." NOP-3"
NOP \ 03
ELSE
30 1 AT-XY ." NOP-2"
NOP \ 02
THEN
ELSE
IF
30 1 AT-XY ." NOP-1"
NOP \ 01
ELSE
30 1 AT-XY ." NOP-0"
NOP \ 00
THEN
THEN
THEN
THEN
;

</pre>

4 IF-a на исполнение одной команды.
Это не 16, как было бы в случае прямо-тупого case.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 13:33 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Угу, самое быстрое. (почти)

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 18:49 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Пришло в голову, что для удобства реализации чего-то вроде Оси нужно бы иначе синтаксис форта ... Думаю, открыть другую тему или тут?

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 20:21 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 20:41 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WingLion писал(а):
Вот, например, что у меня вчера получилось для разборки 4-хбитной команды:

А как это модифицировать/изменять, удобно? ;)
У Броуди есть хорошая идея заменить вложенные проверки условий таблицами. Посмотри, как он делает... Может, исходник проще станет... ;)
Таблицы дают самое большое приращение производительности ;) за счет удалений проверок ;)
У тебя же получилось бинарное дерево, так?
Вот и сделай таблицу из 16 обработчиков команд, и выбор команды по индексу. Вообще IF-ов не будет! :)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 20:51 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 21:10 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
in4 писал(а):
WingLion писал(а):
Вот, например, что у меня вчера получилось для разборки 4-хбитной команды:

А как это модифицировать/изменять, удобно? ;)
У Броуди есть хорошая идея заменить вложенные проверки условий таблицами. Посмотри, как он делает... Может, исходник проще станет... ;)
Таблицы дают самое большое приращение производительности ;) за счет удалений проверок ;)
У тебя же получилось бинарное дерево, так?
Вот и сделай таблицу из 16 обработчиков команд, и выбор команды по индексу. Вообще IF-ов не будет! :)
Это Броуди?
Мне казалось, что даже switch-table в некоторых языках программирования - это такая таблица.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 19, 2007 21:11 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
но обьём! Таблицы эти бывают большие, в зависимости от логики

_________________
понимаю некоторую бестолковость некоторых вопросов


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

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


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

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


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

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