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


         

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


Вот стековый комментарий для слова 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 безразлично (для структур данных)

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