Язык программирования Форт


Глава 14. Память Форта. Словари и контекстные словари - часть 12


Имя (такое как "BASE?") кодируется каким-то способом (в зависимости от версии), прежде чем быть запомненным. Мы скоро увидим подробнее, как кодируются имена. Следующая часть элемента словаря - поле связи содержит просто указатель на другое слово, уже описанное в словаре. Этот адрес используется, чтобы направить поиск на слово, описанное перед этим, обычно на его NFA. Слово, на которое указано, может лежать непосредственно перед данным словом или заметно раньше, в зависимости от структуры связи в конкретной версии. Полезность поля станет яснее, когда мы позднее в этой главе обсудим контекстные словари. Поле программы содержит указатель на программу в машинных кодах, которая исполняется при использовании слова. Эта программа в машинных кодах определяет, wrn делает слово и к какому типу оно относится. Все слова определенного типа (описания, начинающиеся с двоеточия, константы, переменные и т.д.) имеют один и тот же адрес в своем поле программы. Таким образом, константа (созданная оператором CONSTANT) имеет адрес в ее поле программы, указывающий на программу в машинных кодах, которая копирует в стек число из его поля параметров. Эта программа для каждого типа слов называется исполнительной. Адрес поля программы всех описаний, начинающихся с двоеточия, указывает на исполнительную программу, которая управляет выполнением слова в соответствии со списком адресов, хранящихся в поле параметров. Исполнение слов типа : и других слов рассмотрено подробнее в гл. 15. (Действительно использование поля программы, которое мы описали, представляет собой то, что называется косвенно цепной программой. Существуют другие возможности, но они используются нечасто.) Длина поля параметров слова варьируется значительно в соответствии с типом слова и способом его описания. Она может в диапазоне от одного байта (как в словах, описанных CCONSTANT) до многих тысяч байт (скажем, в массивах). Конкретное содержание поля параметров зависит от типа слова. Например, поле параметров константы, переменной и массива содержит последовательность байтов, или данные, в то время как строка-константа будет иметь в поле параметров счетную строку. (Адрес, выдаваемый любым словом, созданным с помощью CREATE, равен PFA этого слова.) Поле параметров слова типа двоеточие содержит адреса, обычно CFA слов, используемых в описании слова.


Начало  Назад  Вперед