Слово H
H (указатель словаря, читается «эйч») — фортовская переменная Каллисто.
H ( −− a ) Переменная, адрес вершины словаря.
Переменная H указывает на первую свободную ячейку словаря, H @ = HERE.
Ввод слова H
В режиме ЛАТ нажмите чёрную клавишу ПП
Заметки
Переменная H отсутствует в стандартах Форта, поэтому её использование ухудшает переносимость приложения.
В большинстве случаев можно обойтись без неё. Для получения адреса вершины стека есть стандартное слово HERE, а изменить это значение позволяет стандартное слово ALLOT.
История
H это первая буква слова HERE
Т.к. переменная H в стандартах Форта отсутствует, в некоторых системах Форта она и называется по другому: DP CP
DP в fig-FORTH Release 1 glossary, май 1979 (англ.)
DP ---- addr U,L A user variable, the dictionary pointer, which contains the address of the next free memory above the dictionary. The value may be read by HERE and altered by ALLOT.
Реализация
145 rrDP .EQU 1137 ; 11137 H − Указатель на первую свободную ячейку словаря H @ = HERE 146 pDP .EQU 137 147 rlDP .EQU 1138 … 2774 ;#H 2775 ; H ( −− a ) Переменная, адрес вершины словаря. 2776 LDP: .DB 1 2777 .TEXT "H" 2778 .DW LDDP 2779 DP: .DW SUSE 2780 .DB pDP
Реализация в SP-Forth 4.20
VARIABLE (DP) \ переменная, содержащая HERE сегмента данных … : DP ( -- addr ) \ переменная, содержащая HERE сегмента данных IS-TEMP-WL IF GET-CURRENT 7 CELLS + ELSE (DP) THEN ;
Советская реализация
В ФОРТ-ЕС вместо переменной H использовался примитив DP!
Вот его описание и определение:
DP! * A-> УСТАНОВИТЬ ВЕРШИНУ СЛОВАРЯ НА АДРЕС A 10 Экран номер 10 ( 31.03.86 HERE ALLOT ALIGN ALIGNH DP! ) CODE DP! ( A->) RD PULL, RD RMASK NR, POP 8, END-CODE
В FORTH ИТЭФ переменная H называлась DP
Вот её определение:
HEAD 202Q,'D',320Q,DP,$USE ; DP DW 22Q ... XDP DW 16000 DUP(0) ; DICTIONARY
Ссылки
- Исходный текст слова H в Каллисто Классик 1.0
- См. слова HERE и ALLOT, а также ДH
- ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Under the Hood в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |