Язык программирования Форт



         

Глава 6. Хранение чисел в памяти - часть 3


Имя и эта информация представляют собой последовательность из нескольких байтов, называемую заголовком указанного слова. Когда исполняется слово, определенное словом CREATE, то в стек кладется адрес, следующий непосредственно после адреса заголовка. Слово ALLOT (от ALLOcaTe- разместить) резервирует определенное число байтов в словаре. Например, CREATE INCHES 2 ALLOT создает в словаре слово с именем INCHES (дюймы) и резервирует, или размещает, 2 байта, в которых может быть помещено слово одинарной длины. Если вы введете 12 INCHES ! слово INCHES положит в стек зарезервированный адрес, а ! запишет в него число 12. INCHES @ . затем возвратит число 12 в стек и напечатает его. Это так просто. Между прочим, слово CREATE имеет более сложные и изощренные применения, которые будут описаны в гл.14,

В этом месте мы совершим небольшое отвлечение в сторону, чтобы познакомиться с некоторыми словами для перемещения чисел между памятью и стеком. Для всех таких слов предварительно нужно задать адрес в памяти, с которым они работают. Вам уже знакомы слова @, !, С@ и С!. Слова 2@ и 2! соответственно извлекают и запоминают числа двойной длины. В некоторых версиях и в MMSFORTH определены также слова 4@ и 4! для работы с 4-байтовыми числами, с помощью которых представляются числа с плавающей запятой. Несколько отличаются слова ? и +!. Слово ? (обязательное в Форт-79, но не включенное в Форт-83) может быть определено просто как : ? ( addr - ) @ . ;

Оно извлекает число из ячейки памяти и печатает его на экране. Аналогично можно определить слово С? (имеющееся в MMSFORTH и других версиях) для извлечения и печати одного байта. Стандартное слово +! добавляет второе число из стека к числу, содержащемуся в ячейке с адресом, который находится на вершине стека. Так, если в ячейке памяти с адресом 22345 содержится число 250, то 5 22345 +! изменит содержимое на 255. Это равносильно следующим действиям : 22345 @ 5 + 22345 ! но выполняется значительно быстрее. Очевидно, что с помощью ALLOT можно резервировать место для размещения более двух байтов.


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