Учебное пособие по языку ФОРТ

ИТФ «Технофорт»
100
10
(1 голос)
0 0

Аннотация: Язык программирования Форт (от английского FORTH) был изобретен Чарльзом Муром в 70-x годах для создания программного обеспечения управляющих устройств. В настоящее время Форт широко используется при решении следующих задач:

Книга добавлена:
23-10-2022, 00:43
0
320
21
Учебное пособие по языку ФОРТ

Читать книгу "Учебное пособие по языку ФОРТ"



18. Управление режимами

В каждый момент Форт-система может находиться в одном из двух состояний — ИСПОЛНЕНИЯ или КОМПИЛЯЦИИ. При загрузке системы устанавливается режим исполнения. Появление во входном тексте определяющего слова ":" переводит систему в режим компиляции на период обработки определения. Слово ";" завершает компиляцию и возвращает систему в прежний режим. То есть, само это слово исполняется при режиме компиляции. Дело в том, что слово ";" является словом НЕМЕДЛЕННОГО ИСПОЛНЕНИЯ. Признак немедленного исполнения — это специальный бит в поле имени словарной статьи каждого слова (либо он выставлен, либо нет). Словами немедленного исполнения являются и все управляющие конструкции.

Предусмотренное в системе слово "IMMEDIATE" присваивает признак немедленного исполнения последнему определенному к моменту его появления слову. Таким образом, программист может создавать новые управляющие слова, которые будут исполняться в период компиляции.

С другой стороны, слово "[COMPILE]" заказывает принудительную компиляцию следующего за ним слова независимо от наличия у того признака немедленного исполнения. Само оно также имеет признак немедленного исполнения.

Можно поступать и иначе. Два слова "[" и "]" немедленно переключают режимы даже внутри определения:

"[" - перевод в режим исполнения;

"]" - перевод в режим компиляции.

B стандарте имеется удобное слово "FIND", служащее для поиска слова в словаре с проверкой признака немедленного исполнения.

FIND ... addr1 --> ... addr2 n

Здесь addr1 — адрес строки co счетчиком, содержащей имя слова. Число n принимает значение 0, если слово не найдено; 1, если слово найдено и имеет признак немедленного исполнения; -1, если этого признака нет. Значение addr2 в первом случае остается прежним, в двух других является адресом поля кода слова.

B отличие от "'" слово "FIND" использует строку co счетчиком, это позволяет формировать образец поиска программным путем.

Специальная переменная "STATE" (флаг состояния) имеет значение ИСТИНА для режима компиляции. Можно написать слова, которые будут выполнять разные действия в зависимости от значения этого флага. Их называют зависимыми от состояния и на первых порах использовать не рекомендуют.

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

: имя1 ... COMPILE имя2 ... ; IMMEDIATE

При компиляции слова "имя1" слово "COMPILE" запоминает адрес следующего в определении слова "имя2". В дальнейшем при исполнении слова "имя1" внутри определения некоторого другого слова "имя3" этот запомненный адрес записывается в поле параметров создаваемой словарной статьи. То есть слово "имя2" будет исполняться во время исполнения слова "имя3", а не "имя1".

Для примера посмотрите, как можно реализовать слова "IF"и "THEN".

: IF COMPILE ?BRANCH HERE 0 , ; IMMEDIATE

: THEN HERE SWAP ! ; IMMEDIATE

При своем будущем исполнении слово "?BRANCH" снимает со стека число и, если оно - 0, подменяет адреса передачи управления, обеспечивая условный переход. Обратите внимание, что число на стеке будет проверяться не в момент исполнения "IF" при компиляции определения некоторого слова, а в момент исполнения самого этого слова. Таким образом, исполнение слова "IF" компилирует адрес слова "?BRANCH", резервирует место для ссылки вперед (на обход ветви-IF) и оставляет адрес зарезервированного места на стеке. Слово "THEN" вписывает по этому адресу текущий адрес в кодофайле, сбрасывая сам адрес co стека.

Учтите, что стек активно используется в процессе компиляции слов системой; поэтому изменять его во время обработки определений (например, текстом "[ DROP ]") не рекомендуется!

Этот пример демонстрирует, как пользователь может создавать собственные структуры управления, повышая эффективность программ.


Скачать книгу "Учебное пособие по языку ФОРТ" - ИТФ «Технофорт» бесплатно


100
10
Оцени книгу:
0 0
Комментарии
Минимальная длина комментария - 7 знаков.
Книжка.орг » Современные российские издания » Учебное пособие по языку ФОРТ
Внимание