Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт авг 16, 2018 11:56

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: структура слова
СообщениеДобавлено: Вт янв 29, 2008 23:59 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4926
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Поговорим немного о том, что из себя представляют слова в форте, и как они связываются в словари. Принято разделять словарную статью на четыре следующих стандартных поля:

LFA - поле связи ( link field address )
NFA - поле имени ( name field address )
CFA - поле кода ( code field address )
PFA - поле параметров ( parameter field address )

Формат каждого из полей у каждого форта свой собственный. В реальных системах некоторых полей может не быть, но могут быть и дополниетльные поля.

Для выполнения статического кода программы (такого, который не пытается искать слово в словаре, перед тем, как его выполнить) достаточно двух полей CFA и PFA, причем поле PFA может отсутствовать.

LFA и NFA нужны интерпретатору форт-среды, для того, чтобы находить нужный CFA(код) по его имени с целью его выполнения. По сути словарь форт-системы - это некая база данных, которая хранит необходимые данные (PFA CFA) и индексирует эти данные с помощью ключевого поля NFA, а LFA организует структуру этой базы данных.

Если рассмотреть несколько различных фортов, то можно увидеть, что словари в них устроены немножечко по-разному, например, в СПФ словарная статья выглядит следующим образом:
<pre>
LFA: back-link - ссылка на предыдущее слово (в поле имени)
to_cfa - адрес поля кода слова
NFA: word_name - имя слова
aligning - выравнивание начала кода
CFA: - поле кода
PFA: - поле данных (необязательно)
</pre>
Надо сказать, что формат словарной статьи сильно зависит от того, какой процессор используется и какой тип кода ФВМ лежит в основе форт-системы.

А вот так выглядит словарная статья в СМАЛ32:
<pre> ╔════╤═════╤═════╤═══════════╤═════════════════════════════════════════╗
║ ## │ Off │ Len │ Field │ Note
╠════╪═════╪═════╪═══════════╪═════════════════════════════════════════╣
║ 1 │ 0 │ 4 │ HASHPTR │ HASH-указатель. Поле содержит адрес
║ │ │ │ │ словарной статьи слова с тем же
║ │ │ │ │ значением HASH-функции, определенного
║ │ │ │ │ раньше данного.
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 2 │ 4 │ 4 │ RTPTR │ Указатель на таблицу RTABLE (поле с
║ │ │ │ │ тем же именем ), расположенную вслед за
║ │ │ │ │ полем кода и полем параметров (или 0,
║ │ │ │ │ если таблица отсутствует)
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 3 │ 8 │ 4 │ │ Reserved field
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 4 │ 12 │ 4 │ LINK │ Содержит адрес словарной статьи
║ │ │ │ │ предыдущего слова в словаре
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 5 │ 16 │ 4 │ ATTRS │ Поле атрибутов
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 6 │ 20 │ 4 │ CFAPTR │ Адрес поля кода слова. Содержит адрес
║ │ │ │ │ поля CODE этой же словарной статьи
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 7 │ 24 │ 4 │ CODELEN │ Длина поля кода вместе с полем
║ │ │ │ │ параметров (если оно присутствует)
║ │ │ │ │ данной словарной статьи
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 8 │ 28 │ 4 │ VOCID │ Идентификатор словаря, к которому
║ │ │ │ │ принадлежит данное слово
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 9 │ 32 │ 1 │ NAMELEN │ Длина имени слова. Вместе со следующим
║ │ │ │ │ полем образует строку со счетчиком
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 10 │ 33 │ ??? │ NAME │ Имя слова - длиной не более 255
║ │ │ │ │ символов. Допускается использование
║ │ │ │ │ символов кириллицы в именах
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 11 │ ??? │ 1 │ NAMETERM │ Нулевой символ. Вместе с предыдущим
║ │ │ │ │ полем образует строку в формате ASCIIz
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 12 │ ??? │ ??? │ CODE │ Код, определяющий семантику слова
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 13 │ ??? │ ??? │ PARAS │ Поле параметров (может отсутствовать)
╟────┼─────┼─────┼───────────┼─────────────────────────────────────────╢
║ 14 │ ??? │ ??? │ RTABLE │ Таблица настройки слова на новый
║ │ │ │ │ адрес
╚════╧═════╧═════╧═══════════╧═════════════════════════════════════════╝
</pre>

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


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Название топика, с моей точки зрения, не совсем правильно выбрано

т.к. наличие признаков ( например IMMEDIATE), характеризующих варианты использования слова,
тем более способ их хранения отходит от исходно введенного определения слова,
как простого понятия:)


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

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


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

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


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

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