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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 40 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''DP''' (от ''англ.'' Dictionary Pointer, указатель словаря) — стандартное слово [[Каллисто]].
'''H''' (указатель словаря, читается «эйч») — фортовская переменная [[Каллисто]].
H              ( −− a )                            Переменная, адрес вершины словаря.
Переменная '''H''' указывает на первую свободную ячейку словаря, '''H''' [[Слово @|@]] = [[HERE]].


== Ввод слова 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
         of the next free memory above the dictionary. The value may be read
         of the next free memory above the dictionary. The value may be read
         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!
Вот его описание и определение:
<PRE>
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
</PRE>
В FORTH ИТЭФ переменная '''H''' называлась DP
Вот её определение:
<PRE>
            HEAD    202Q,'D',320Q,DP,$USE                ; DP
            DW 22Q
            ...
  XDP    DW  16000 DUP(0)          ; DICTIONARY
</PRE>
== Ссылки ==
* {{Исходник|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://www.forth.com/starting-forth/sf9/sf9.html Under the Hood] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




Строка 12: Строка 79:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Стандартные переменные Каллисто]]
[[Категория:Переменные 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

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


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


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