Язык Форт и его реализации



         

Структура словарной статьи


Каждое слово-команда, известное форт-системе, хранится в оперативной памяти (в словаре) в виде специальной структуры данных — словарной статьи, состоящей из поля имени, поля связи, поля кода и поля параметров. Стандарт не фиксирует порядок взаимного расположения этих полей, оставляя его на усмотрение разработчиков реализации. Как правило, поля располагаются подряд в том порядке, как они перечислены выше.

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

Поле имени содержит имя слова в виде строки со счетчиком. Стандарт ограничивает максимальную длину имени 31 литерой (5 двоичными разрядами), чтобы остающиеся разряды в байте счетчика можно было использовать под специальные признаки. Важнейший из них — признак немедленного исполнения, который обычно занимает старший разряд байта-счетчика. Таким образом, поле имени имеет переменную длину, которая определяется значением счетчика.

Поле связи занимает 2 байта и содержит адрес заголовка предыдущей словарной статьи. Через это поле словарные статьи связаны в цепные списки, в которых можно вести поиск статьи по имени слова. Поле связи первой статьи в списке содержит некоторое специальное значение, обычно нуль. Новые слова добавляются в конец списка, и поиск слов ведется от конца списка к началу.

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


Содержание  Назад  Вперед