Язык Форт и его реализации



             

Приложение 1.Модель форт-системы


Приводимый ниже текст представляет собой ядро системы ФОРТ-ЕС (см. ), из которого исключены запускающая часть и реализации слов нижнего уровня для обмена с терминалом и внешней памятью. Общий объем ядра — 8 Кбайт (свыше 200 слов). Текст состоит из двух частей — списка слов с их краткими спецификациями и экранов с определениями на встроенном языке ассемблера и на языке Форт.

Помимо слов, которым соответствуют статьи в словаре, внутри ассемблерных определений используются метки и адреса. В спецификациях эти объекты отмечены буквами М и А. Они определяются с помощью слов М: и А: соответственно. Метки используются в машинных командах, а адреса порождают двухбайтное значение, содержащее данный адрес. Адресные операнды FIRST и SECOND обозначают соответственно первый и второй элементы стека. Макрокоманды PUSH, POP и PULL можно рассматривать как команды с одним регистровым операндом. Операция PUSH помещает на стек значение из регистра, POP снимает верхнее значение со стека, засылая его в регистр, и PULL копирует верхнее значение стека в регистр. Кроме того, в ассемблерных определениях используются локальные метки [, с. 191], обозначаемые целыми числами и словами =F (для ссылки вперед) и =B (для ссылки назад). Определяется локальная метка через слово =H, которое полагает ее равной текущему значению счетчика адреса. Регистры общего назначения обозначаются специальными словами и имеют следующий смысл:

RW1 — рабочий регистр, старший в паре;

RW2 — рабочий регистр, младший в паре;

RI — указатель адресного интерпретатора;

RRET — абсолютный адрес вершины стека возвратов;

RSTACK — абсолютный адрес вершины стека данных;

RD — форт-адрес текущей вершины словаря;

RFORTH — абсолютный адрес начала словаря, соответствующий нулевому форт-адресу;

RNEXT — адрес точки NEXT адресного интерпретатора (тот же адрес, что и в RFORTH);

RTWO — константа 2;




Содержание    Вперед