Каждое из слов, приведенных в , рассматривается в этом разделе самостоятельно. В конце раздела мы приводим несколько задач на употребление этих слов, которые будут полезны для совершенствования ваших навыков в их использовании.
Прежде чем продолжить описание приведенных в таблице слов, обратим внимание на обозначения в скобках. Как вы уже видели в , в Форте принято применять такие обозначения (они называются диаграммой состояния стека), чтобы показать состояние стека до и после применения какого-либо слова. Правило хорошего тона -- помещать такую диаграмму сразу после имени определяемого слова. Поскольку все, что заключено с двух сторон в скобки (если только после открывающей скобки стоит пробел). Форт при вводе игнорирует, скобки можно использовать для помещения комментариев к Форт-словам. Вот, например, определение слова для сложения двух чисел и умножения на третье число:
: +* (n1 n2 n3 -- п) + * :
Таблица 2.1. Перечень слов для манипуляций в стеке
Слово | Состояние стека ( до - после ) | Действие |
DROP | ( n - ) | Очищает вершину стека |
DUP | ( n - n n ) | Делает копию числа на вершине стека |
SWAP | ( n1 n2 - n2 n1 ) | Переставляет местами два числа |
OVER | ( n1 n2 - n1 n2 n1 ) | Копирует второе число на вершину |
ROT | ( n1 n2 n3 - n2 n3 n1 ) | Перекладывает третье число на вершину |
n PICK | ( n1 ... - n1 ... n1 ) | Кладет на вершину копию п-го элемента |
n ROLL | ( n1 ... - ... n1) | Перекладывает п-й элемент на вершину |
?DUP | ( n - n n ) или ( 0 - 0 ) | Выполняет операцию DUP, если n == 0 |
DEPTH | ( ... - n ) | Возвращает в стек n -- число элементов |
Если мы вводим 3 4 5 + *, то до того, как слово будет исполнено, n1=3, n2=4, n3=5. После операции умножения в стеке находится n, которое имеет значение 27. Перечень принятых обозначений для содержимого стека приведен в .
Таблица 2.2. Обозначения для содержимого стека
Символ | Значение |
n, n1 , | 16-разрядное целое число одинарной длины |
d,d1, . . . | 32-разрядное целое число двойной длины |
U | 16-разрядное число без знака одинарной длины |
ud | 32-разрядное число без знака двойной длины |
char или с | 7-разрядное представление кода символа ASCII |
byte или Ь | 8-разрядное число, байт |
флаг или f | 1 или 0 - булев флаг |
адр, адр1 | Адреса |
$ или $адр | Адрес, где находится строка символов |