Приведенные определения лишь иллюстрируют выразительные
Приведенные определения лишь иллюстрируют выразительные возможности языка, показывая, что даже такие, самые элементарные действия можно задать машиннонезависимым способом в виде высокоуровневых определений.
Вот еще пример определения важного стандартного слова:
: LITERAL ( A ---> A/ ) STATE @ IF COMPILE LIT , THEN ; IMMEDIATE
Слово
LITERAL анализирует текущее состояние текстового интерпретатора: если это компиляция, то компилирует значение, находящееся на вершине стека, как литерал в шитый код; в противном случае это значение остается на стеке.
Теперь у нас достаточно средств, чтобы выразить стандартные структуры управления, как обычные определения, через двоеточие. Например, слова для условного оператора можно определить так:
: IF ( ---> A ) COMPILE ?BRANCH HERE 2 ALLOT ; IMMEDIATE : THEN ( A ---> ) HERE SWAP ! ; IMMEDIATE : ELSE ( A1 ---> A2 ) COMPILE BRANCH HERE 2 ALLOT HERE ROT ! ; IMMEDIATE
Все эти слова имеют признак немедленного исполнения, который придается им словом
IMMEDIATE, исполненным сразу после завершения каждого определения. Это означает, что данные слова будут исполняться, а не компилироваться, как остальные, во время обработки тела определений текстовым интерпретатором форт-системы.
На рис. 2.5 показана последовательность состояний словаря и стека в разные моменты обработки фрагмента
A B IF C D THEN E F в теле определения через двоеточие. Эту обработку выполняет текстовый интерпретатор, находящийся в состоянии компиляции. В результате строится последовательность адресов словарных статей в соответствии с принятой техникой шитого кода.
Рис. 2.5. Компиляция условного оператора
Пусть слова
A,
B, ...,
F являются обычными форт-словами, не имеющими признака немедленного исполнения. Тогда соответствующие им адреса будут компилироваться на вершину словаря.
Состояние I на рис. 2.5. соответствует моменту обработки непосредственно перед вводом слова
IF. На вершине словаря скомпилированы адреса статей
A и
B и указатель вершины
HERE указывает на следующий адрес.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий