Слово H: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
(не показано 17 промежуточных версий этого же участника)
Строка 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.


== Заметки ==
== Реализация ==
Переменная H отсутствует в стандартах Форта, поэтому её использование ухудшает переносимость программы. В большинстве случаев достаточно использовать более распространённые слова [[HERE]] и [[ALLOT]].
<pre>
 
145 rrDP            .EQU    1137                  ; 11137  H − Указатель на первую свободную ячейку словаря H @ = HERE
== История ==
146 pDP            .EQU      137
H это сокращение от [[HERE]]
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>


Т.к. переменная H в стандартах Форта отсутствует, в некоторых системах Форта она и называется по другому: DP CP
=== Реализация в SP-Forth 4.20 ===
<pre>
  VARIABLE (DP)    \ переменная, содержащая HERE сегмента данных
: DP ( -- addr ) \ переменная, содержащая HERE сегмента данных
  IS-TEMP-WL
  IF GET-CURRENT 7 CELLS + ELSE (DP) THEN
;
</pre>


== Реализация ==
=== Советская реализация ===
В ФОРТ-ЕС был [[примитив]] DP!
В ФОРТ-ЕС вместо переменной '''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


Вот её определение:
Вот её определение:
Строка 43: Строка 70:


== Ссылки ==
== Ссылки ==
* См. слова [[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] ''(англ.)''
Строка 52: Строка 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

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.