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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''H''' (указатель словаря, читается «эйч») — встроенная переменная [[Каллисто]].
'''H''' (указатель словаря, читается «эйч») — фортовская переменная [[Каллисто]].
  H              ( −− a )                            Переменная, адрес вершины словаря.
  H              ( −− a )                            Переменная, адрес вершины словаря.
Переменная '''H''' указывает на первую свободную ячейку словаря, '''H''' [[Слово @|@]] = [[HERE]].
Переменная '''H''' указывает на первую свободную ячейку словаря, '''H''' [[Слово @|@]] = [[HERE]].
Строка 6: Строка 6:
В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша ПП|чёрную клавишу {{Чёрная клавиша|ПП}}]]
В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша ПП|чёрную клавишу {{Чёрная клавиша|ПП}}]]


== DP в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
== Заметки ==
DP            ----  addr                      U,L
Переменная '''H''' отсутствует в стандартах Форта, поэтому её использование ухудшает переносимость приложения.
        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.


== Заметки ==
В большинстве случаев можно обойтись без неё. Для получения адреса вершины стека есть стандартное слово [[HERE]], а изменить это значение позволяет стандартное слово [[ALLOT]].
Переменная '''H''' отсутствует в стандартах Форта, поэтому её использование ухудшает переносимость программы. В большинстве случаев достаточно использовать стандартные слова [[HERE]] и [[ALLOT]].


== История ==
== История ==
Строка 19: Строка 15:


Т.к. переменная '''H''' в стандартах Форта отсутствует, в некоторых системах Форта она и называется по другому: DP CP
Т.к. переменная '''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.


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


Строка 53: Строка 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

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


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


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