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


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


Возможны и более радикальные варианты. Функциональные элементы слов Форта (имя, ячейка связи, поля программы и параметров) могут храниться даже в различных частях или сегментах памяти, как в HSFORTH и (немного иначе) в MacFORTH.

Нахождение частей слов

Вы уже знаете наиболее часто используемые слова Форта, предназначенные для поиска адресов других слов в словаре ' (апостроф), ['] и FIND, которые находят CFA или PFA в зависимости от того, используете вы Форт-79 или Форт-83. И вы так же знаете о слове >BODY в Форт-83, которое находит PFA для данного CFA, лежащего в стеке. Слово FIND в Форт-83 имеет совершенно другой смысл по отношению к Форт-79. В стандарте 83 слово FIND предполагает наличие в стеке адреса счетной строки. Затем FIND ищет эту строку в словаре и, если находит, заносит в стек CFA и 1 или -1 на верх стека. Если слово в описании типа двоеточие помечено как слово "немедленного исполнения", в стек заносится 1, если же оно работает только в режиме исполнения - то -1. Если строка в словаре не найдена, в стек заносится адрес исходной строки, а на верх стека - 0. В Форт-83 слово FIND может использоваться не только подобно ' с EXECUTE, но решение может быть принято в зависимости от того, является ли слово оператором немедленного исполнения и найдено ли слово вообще. В действительности FIND используется главным образом для внутренней работы языка при компиляции, а не для целей программирования. Многие версии снабжены дополнительными словами для вычисления адресов различных полей, выдавая PFA или NFA в стек. Их работа пояснена ниже:

NFA "n-f-a" (PFA - NFA) LFA "l-f-a" (PFA - LFA) CFA "c-f-a" (PFA - CFA) PFA "p-f-a" (NFA - PFA)

NFA использует нестандартное слово TRAVERSE, которое просматривает поле имени произвольной длины из конца в конец (в любом направлении), находя начальный или конечный байт, это позволяет работать с именем любой длины. Хотя Форт-79 и Форт-83 категорически запрещают изменение содержимого скомпилированных слов в стандартной программе, экспериментальный стандарт Форт-83 признает полезность нахождения адресов полей слова.


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



Книжный магазин