Способ мышления-Форт



Глава 5. Разработка: элементы Форт-стиля - часть 17


Вот стековый комментарий для слова COUNT:

( адрес-строки-со-счетчиком -- адрес-текста длина )

или:

( 'строки-со-счетчиком -- 'текста длина )

("Длина" после исполнения слова располагается на вершине стека.)

Если определение не оказывает влияния на стек (то есть, с точки зрения пользователя эффекта не наблюдается, независимо от того, насколько интенсивно используется стек внутри определения), то стековый комментарий не нужен:

: ПЕЧЬ ЦЫПЛЯТА ПЕЧКА ! ;

С другой стороны, Вам может захотеться использовать пустой стековый комментарий - т.е.:

: ПЕЧЬ ( -- ) ЦЫПЛЯТА ПЕЧКА ! ;

для подчеркивания отсутствия влияния слова на состояние стека.

Если определение берет аргументы, но ничего не возвращает, двойное тире необязательно, к примеру запись

( адрес длина -- )

может быть укорочена до

( адрес длина )

Такое соглашение принято на основании следующего наблюдения: гораздо чаще встречаются определения, которые берут аргументы и ничего не возвращают, чем те, которые ничего не берут, но возвращают на стеке результат.

СТАНДАРТНЫЕ АББРЕВИАТУРЫ ДЛЯ СТЕКОВЫХ КОММЕНТАРИЕВ.

Обозначения для стековой нотации должны быть содержательны. В таблице 5-2 показано большинство из наиболее часто используемых аббревиатур. (Эта таблица повторяется и в приложении Д.) Термины "одинарная длина", "двойная длина" и т.д. относятся к размеру "ячейки" данной Форт-системы. (Если система использует 16-разрядные машинные слова, то "n" представляет 16-битное число; если система работает с 32-мя разрядами, то "n" представляет 32-х разрядное число.)

ИЗОБРАЖЕНИЕ ФЛАГОВ.

В таблице 5-2 показаны три способа изображения булевских флагов. Для иллюстрации: вот три версии одного и того же стекового комментария для слова -TEXT:

( a1 u a2 -- ? ) ( a1 u a2 -- t=не-равны ) ( a1 u a2 -- f=равны )

Таблица 5-2. Обозначения для стековых комментариев.

----------------------------------------------------------------

n чило одинарной длины со знаком d число двойной длины со знаком u чило одинарной длины без знака ud число двойной длины без знака t тройная длина q учетверенная длина c 7 (или 8)-битный символ b 8-ми битный байт ? булевский флаг, или: t= (true) истина f= (false) ложь a или adr или адр адрес acf адрес поля кода apf адрес поля параметров ' (в качестве префикса) адрес чего-либо s d (как пара) источник приемник lo hi нижняя- верхняя-граница (включительно) # число (количество) o (offset) смещение i индекс m маска x безразлично (для структур данных)




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