Слово H: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
(не показано 18 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''H''' (указатель словаря, читается «эйч») — | '''H''' (указатель словаря, читается «эйч») — фортовская переменная [[Каллисто]]. | ||
H ( −− a ) Переменная, адрес вершины словаря. | |||
H указывает на первую свободную ячейку словаря, H [[Слово @|@]] = [[HERE]]. | Переменная '''H''' указывает на первую свободную ячейку словаря, '''H''' [[Слово @|@]] = [[HERE]]. | ||
== Ввод слова H == | == Ввод слова H == | ||
В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша ПП|чёрную клавишу {{Чёрная клавиша|ПП}}]] | В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша ПП|чёрную клавишу {{Чёрная клавиша|ПП}}]] | ||
== DP в fig-FORTH Release 1 glossary, май 1979 (англ.) == | == Заметки == | ||
Переменная '''H''' отсутствует в стандартах Форта, поэтому её использование ухудшает переносимость приложения. | |||
В большинстве случаев можно обойтись без неё. Для получения адреса вершины стека есть стандартное слово [[HERE]], а изменить это значение позволяет стандартное слово [[ALLOT]]. | |||
== История == | |||
'''H''' это первая буква слова [[HERE]] | |||
Т.к. переменная '''H''' в стандартах Форта отсутствует, в некоторых системах Форта она и называется по другому: DP CP | |||
=== DP в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
DP ---- addr U,L | DP ---- addr U,L | ||
A user variable, the dictionary pointer, which contains the address | A user variable, the dictionary pointer, which contains the address | ||
Строка 12: | Строка 22: | ||
by HERE and altered by ALLOT. | by HERE and altered by ALLOT. | ||
== | == Реализация == | ||
Переменная | <pre> | ||
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 | |||
</pre> | |||
=== Реализация в SP-Forth 4.20 === | |||
<pre> | |||
VARIABLE (DP) \ переменная, содержащая HERE сегмента данных | |||
… | |||
: DP ( -- addr ) \ переменная, содержащая HERE сегмента данных | |||
IS-TEMP-WL | |||
IF GET-CURRENT 7 CELLS + ELSE (DP) THEN | |||
; | |||
</pre> | |||
== | === Советская реализация === | ||
В ФОРТ-ЕС | В ФОРТ-ЕС вместо переменной '''H''' использовался [[примитив]] DP! | ||
Вот его описание и определение: | Вот его описание и определение: | ||
Строка 32: | Строка 59: | ||
CODE DP! ( A->) RD PULL, RD RMASK NR, POP 8, END-CODE | CODE DP! ( A->) RD PULL, RD RMASK NR, POP 8, END-CODE | ||
</PRE> | </PRE> | ||
В FORTH ИТЭФ переменная H называлась DP | В FORTH ИТЭФ переменная '''H''' называлась DP | ||
Вот её определение: | Вот её определение: | ||
Строка 38: | Строка 65: | ||
HEAD 202Q,'D',320Q,DP,$USE ; DP | HEAD 202Q,'D',320Q,DP,$USE ; DP | ||
DW 22Q | DW 22Q | ||
... | |||
XDP DW 16000 DUP(0) ; DICTIONARY | |||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
* См. слова [[HERE]] и [[ALLOT]] | * {{Исходник|H|H}} | ||
* См. слова [[HERE]] и [[ALLOT]], а также [[ДH]] | |||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\09.FUNKZIONIROWANIE%20FORT-SISTEMY ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | * [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\09.FUNKZIONIROWANIE%20FORT-SISTEMY ФУНКЦИОНИРОВАНИЕ ФОРТ-СИСТЕМЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | ||
* [http://www.forth.com/starting-forth/sf9/sf9.html Under the Hood] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | * [http://www.forth.com/starting-forth/sf9/sf9.html Under the Hood] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | ||
Строка 50: | Строка 80: | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Переменные USER]] | [[Категория:Переменные USER]] | ||
[[Категория: | [[Категория:Встроенные переменные Каллисто]] | ||
[[Категория:Работа со словарём Каллисто]] | [[Категория:Работа со словарём Каллисто]] | ||
[[Категория: | [[Категория:Фортовские слова]] |
Текущая версия от 09:32, 19 февраля 2019
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 (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |