Рассказывается о языке программирования Форт. Он служит простым и эффективным средством программирования для мини и микро ЭВМ. Ero легко приспособить для коннретных областей применения. Язык Форт получил широкое распространение как язык для непосредственноrо управления оборудованием, в том числе роботами.
В выполняемые словом действия может входить компиляция других слов. Возникает естественный вопрос, куда же деваются значения а н Ь, которые . В системе есть еще один стек — стек возвратов, о нем будет рассказано ниже. СЛОВАРНАЯ СТАТЬЯ Теперь более подробно рассмотрим, как функционирует Форт. Она может быть устроена по. Там, где это возможно, мы будем описывать устройство и работу систем независимо от способа реализации. Для каждого слова при его определении система создает словарную статью — расположенный в кодофайле информационный объект, содержащий перечень входящих в слово действий и устроенный так, чтобы был возможен его поиск по имени слова в словаре системы. Можно считать, что словарная статья состоит из системной части, служащей для ее хранения и поиска, и программной части, описывающей действия и информацию, связанные с этим словом. В системной части естественно выделяются. Поле имени, содержащее имя слова, представленное в виде строки со счетчиком. Поле связи — адрес словарной статьи предыдущего слова, служащий для организации списка словарных статей. В программную часть включаются. Поле кода, или исполняемая часть, представляющая собой вызов интерпретатора . Поле параметра, или данные — область памяти, используемая словом . При выполнении введенного слова его прежде всего ищут в словаре. управление передается на поле кода этого слова. Для выполнения каждого из этих двух действий по отдельности служат следующие слова. При выполнении этой конструкции адрес исполняемой части слова слово кладется на стек. В системе имеется удобное слово . Число п принимает значение . В отличие от . Поговорим теперь немного об управляющих конструкциях. Они используют стандартные слова . Для примера посмотрите, как можно реализовать слова . Таким образом, исполнение слова . Заметьте, что стек, в режиме компиляции программистом не используемый, активно используется в процессе компиляции слов системой, поэтому изменять его во время исполнения определений . СТЕК ВОЗВРАТОВ Для того чтобы . слегка отдохнуть от трудного материала предыдущих разделов, познакомимся с более простой конструкцией — стеком возвратов, знание которой очень пригодится при дальнейшем изложении. Кроме арифметического стека, в системе используется еще один . Система использует его для организации циклов и вложенного исполнения слов. Программист может временно хранить информацию в стеке возвратов с помощью слов. а число а снимается из стека и кладется в стек возвратов . а . число а снимается из стека возвратов и кладется в арифметический стек. а число а с вершины стека возвратов копируется в арифметический стек. При использовании стека возвратов внутри цикла слова . Именно поэтому опасно совместное использование слов . ИСПОЛНЕНИЕ СЛОВ Теперь подробно опишем процедуру исполнения слов. Подчеркнем, что предлагаемое описание относится к прямому шитому коду. Как уже говорилось, в системе имеется специальная программа — адресный интерпретатор, которая занимается исполнением слов, не записанных в машинных командах. Интерпретатор представляет собой программу с тремя режимами. Исполнение слова начинается с вызова режима . Такие вложенные вызовы продолжаются до тех пор, пока управ . В качестве упражнения разберите устройство генератора одномерных массивов. В дальнейшем выполнение имени массива берет из стека индекс, проверяет его принадлежность к диапазону от . Чтобы отличать числа двойной точности от обычных чисел, надо в запись таких чисел . Для размещения такого числа в стеке и, аналогично, в памяти отводятся две стандартные позиции, идущие подряд, левая половина числа располагается на вершине стека, а правая — за ней. Слов, работающих с числами удвоенной точности, в языке не очень много. В конце каждой такой программы записан вызов режима . В конце каждого интерпретируемого кода записан вызов третьего режима интерпретатора — режима . Еще несколько замечаний к описанной процедуре. При компиляции чисел перед числом компилируется специальное слово, кладущее на стек число из следующих за ним двух байтов и одновременно переставляющее указатель интерпретации после этих двух байтов. Аналогичным образом обрабатываются строки. ОПРЕДЕЛЯЮЩИЕ СЛОВА Вы уже знакомы с определяющими словами, служащими для образования новых слов. Сейчас вы увидите способ описания таких слов. При выполнении конструкции слово . В дальнейшем при исполнении слова имя на стек кладется адрес поля параметров и выполняется текст ;исполняющая часть. Наконец, имеются слова. ФОРМАТНЫЙ ВЫВОД До сих пор рассматривались только самые простые способы вывода информации. Можно к ним добавить еще по материалам предыдущего раздела слово . , выводящее на печать двойное слово, снимаемое со стека. В основе этого и других слов, управляющих выводом, лежит несколько вспомогательных слов, с помощью которых можно организовать любой вывод. В Форте можно просто менять систему счисления, используемую при вводе и выводе информации. Ее исходное значение равно десяти . основанию обычной десятичной системы. Особенно часто используются шестнадцатиричная и двоичная системы, первая из них устанавливается словом . Описываемые ниже слова работают с буфером вывода, в котором формируется внешнее представление числа в виде строки сим . Форматное преобразование начинается словом . Собственно для формирования символов должны использоваться другие слова, которые выделяют поочередно разряды числа и превращают их в соответствующие символы. Основным таким преобразователем является слово . Оно делит двойное число с вершины стека на основание текущей системы счисления, заменяет его на стеке получившимся частным . Полный перевод числа выполняет слово . для печати обычных чисел определяется совсем просто. Первое печатает номер телефона в стандартном виде. Для этого используется память на внешних носителях. В основном это память на магнитном диске, но можно воспользоваться и кассетным магнитофоном. В Форте данные и программы запоминаются на диске блоками, по .