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

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - структура слова
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
Название топика, с моей точки зрения, не совсем правильно выбрано

т.к. наличие признаков ( например IMMEDIATE), характеризующих варианты использования слова,
тем более способ их хранения отходит от исходно введенного определения слова,
как простого понятия:)
Сообщение Добавлено: Ср янв 30, 2008 13:42
  Заголовок сообщения:  структура слова  Ответить с цитатой
Поговорим немного о том, что из себя представляют слова в форте, и как они связываются в словари. Принято разделять словарную статью на четыре следующих стандартных поля:

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>
Сообщение Добавлено: Вт янв 29, 2008 23:59

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


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