Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 23, 2024 13:58

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 10, 2008 22:27 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Friday-13 --> F13

Внутренняя команда 6-битная, но снаружи команда 4-хбитная.
Исполнение некоторых команд (1,6,7) происходит за 2 такта.
Система команд процессора следующая:

0 - NOP - чтение команды (обойти эту команду я не могу да и смысла не вижу)
1 - NEXT - то самое NEXT, которое нужно Форту... формально исполняет RET&CALL без выборки команды CALL
2 - ADINT (CALL) - вызов подпрограммы, оно же вызов адресного интерпретатора, который работает за счет NEXT никакого другого кода для реализации адресного интерпретатора не нужно.
3 - LIT - что оно делает, надеюсь, объяснять не надо.
4 - RET (CODE) - возврат из подпрограммы, оно же - вставка кода в шитый код
5 - IF - переход, если на стеке данных 0 (пока без уничтожения флага)
6 - @
7 - !

8 - >R
9 - R>
10 - dup
11 - drop
12 - over
13 - swap
14 - (add) - префиксная операция с АLU
15 - (mul) - префиксная операция с ALU
\ пока 14 и 15 формально совпадают, в схеме процессора зарезервированы входы для управления операциями,
которые исполняются по командам 14 и 15
(16) - @RET внутриядерная команда (недоступная) - окончание исполнения @
(17) - !RET внутриядерная команда (недоступная) - окончание исполнения !

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 10, 2008 22:59 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
1 - NEXT - то самое NEXT, которое нужно Форту... формально исполняет RET&CALL без выборки команды CALL

а это можно пояснить? Как выполняется команда?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 10, 2008 23:10 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Со стека возвратов берется адрес,
разыменовывается и результат кладется в указатель команд (PC)
(то что было в указателе до того, затирается).
А адрес на вершине стека возвратов увеличивается на единичку.

выполняются эти действия за 2 такта.
Первый такт - делается то же самое, что по команде RET
Второй такт - делается то же самое, что по команде CALL
(но без выборки самой команды, а только чтение адреса перехода и засылка его в PC).

В результате имеем такую структуру для исполнения:

CALL ADDR1 -> вызов слова по ADDR1
ADDR2 -> вызов слова по ADDR2
ADDR3 -> вызов слова по ADDR3

ADDR1 ... программа1, заканчивающаяся NEXT-ом
ADDR2 ... программа2, заканчивающаяся NEXT-ом
ADDR3 ... программа3, заканчивающаяся NEXT-ом

одного CALL вначале списка адресов достаточно для запуска механизма адресного интерпретатора.
Чтобы закончить работу адресного интерпретатора в данном списке, в последнем слове должно быть:

ADDRn: RET

Что фактически равносильно слову CODE, т.е. переходу к прямому исполнению команд процессора.

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


Последний раз редактировалось WingLion Ср июн 11, 2008 07:48, всего редактировалось 2 раз(а).

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

Зарегистрирован: Сб янв 26, 2008 18:23
Сообщения: 71
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Next должно

брать число со стека возвратов
BEGIN
как то проверить (скажем - признак старший бит) является ли это число вызовом форт-слова или вызовом примитивы
IF
если это форт-слово то считать число адресом ячейки где храниться адрес
и повторить проверку

ELSE
если это примитив - то передать управление
THEN
AGAIN


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

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

К тому же, на стеке возвратов лежат НЕ ИНСТРУКЦИИ процессору, а адрес интерпретации
(или адрес возврата), которые вполне себе на весь диапазон процессорного слова попадают.
Если же программист умудряется делать этот NEXT внутри цикла, когда на стеке лежит всякая
чертовщина, то проверять это должен не процессор,
а компилятор и по рукам (мордам, лапам, хвостам... кто чем пишет)
бить, да и то не факт, надо ли это?...

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Тема закрывается и переключается сюда: http://fforum.winglion.ru/viewtopic.php?t=1517

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


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

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


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

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


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

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