Редактирование: DEPTH

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''DEPTH''' (глубина, читается «дэпф») — стандартное слово [[Каллисто]]. Размер [[Стек данных|стека]].
'''DEPTH''' (глубина) — стандартное слово [[Каллисто]].
  DEPTH          ( −− U )                             Глубина стека.
  DEPTH          ( -- u )                       Глубина стека. u — количество значений на стеке данных.
                                                    U −− количество значений на стеке данных до исполнения DEPTH.
Выдаёт в [[Стек данных|стек]] полное количество чисел, хранившихся в [[Стек данных|стеке]] до исполнения этой команды.
[[Файл:dSDepthPickRot.png|thumb|right|264px|Пример работы слова DEPTH]]
Кладёт на [[Стек данных|стек]] число элементов [[Стек данных|стека]] до исполнения этой команды.


== Ввод слова DEPTH ==
== Ввод слова DEPTH ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]]
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]]


== DEPTH и FDEPTH в стандарте ANS Forth ==
== DEPTH в стандарте ANS Forth ==
<pre>
  6.1.1200  DEPTH                                                          CORE
  6.1.1200  DEPTH                                                          CORE
             ( -- +n )
             ( -- +n )
Строка 15: Строка 12:
             данных перед тем, как +n было помещено на стек.
             данных перед тем, как +n было помещено на стек.


== FDEPTH в стандарте ANS Forth ==
  12.6.1.1497  FDEPTH                  "f-depth"                        FLOATING
  12.6.1.1497  FDEPTH                  "f-depth"                        FLOATING
             ( -- +n )
             ( -- +n )
Строка 21: Строка 19:
             стеке данных, +n является текущим числом возможных значений с  
             стеке данных, +n является текущим числом возможных значений с  
             плавающей точкой, содержащихся на стеке данных.
             плавающей точкой, содержащихся на стеке данных.
</pre>


== История ==
== DEPTH в предыдущем стандарте Forth-83 (англ.) ==
В Форте FSP88M это слово известно под именем DPT
 
Английское слово [http://www.lingvo-online.ru/ru/Translate/en-ru/depth depth] означает «глубина».
 
=== DEPTH в предыдущем стандарте Forth-83 (англ.) ===
       DEPTH        -- +n                        79
       DEPTH        -- +n                        79
           +n is the number of 16-bit values contained in the data
           +n is the number of 16-bit values contained in the data
           stack before +n was placed on the stack.
           stack before +n was placed on the stack.


=== DEPTH в стандарте Forth-79 (англ.) ===
== DEPTH в стандарте Forth-79 (англ.) ==
  DEPTH          -- n                          238
  DEPTH          -- n                          238
     Leave the number of the quantity of 16-bit values contained in
     Leave the number of the quantity of 16-bit values contained in
     the data stack, before n added.
     the data stack, before n added.


== Реализация ==
== История ==
<pre>
В Форте FSP88M это слово известно под именем DPT
3907 ;#DEPTH
3908 ; DEPTH            ( −− U )                            Глубина стека. U −− количество значений на стеке данных до исполнения DEPTH.
3909 LDEPTH:        .DB    5
3910                .TEXT  "DEPTH"                ; ( −− глубина )
3911                .DW    LCOPY                  ; Положить на стек полное количество чисел, хранившихся на стеке до исполнения DEPTH
3912 DEPTH:          .DW CALL, SZERO,UAT, SPAT,ONEP,SUB, EXIT
</pre>
Реализации из SP-Forth 4.20:
<pre>
: DEPTH ( -- +n ) \ 94
\ +n - число одинарных ячеек, находящихся на стеке данных перед
\ тем как туда было помещено +n.
  SP@ S0 @ - NEGATE  1 CELLS /
\ значение может быть отрицательным, поэтому '>CELLS' вместо '/' нельзя 
;
</pre>
<pre>
CODE FDEPTH  \ *
      LEA EBP, -4 [EBP]
      MOV [EBP], EAX
      FSTSW EAX
      SHR  EAX, # 0B
      AND  EAX, # 7
      JZ  SHORT @@1
      NEG  EAX
      LEA  EAX, 8 [EAX]
@@1:  RET
END-CODE


\ Стек завернут в кольцо!!!
== Реализация DEPTH ==
\ Нумерация регистров в сопроцессоре, видимо, следующая (experimental)
Юрий Семёнов приводит следующее описание слова DEPTH (стр. 151):
\        0 7 6 5 4 3 2 1 , где 0 - дно стека
\ FSTSW возвращает номер регистра
\ Пришлось это обработать...
</pre>
 
=== Советская реализация ===
Юрий Семёнов приводит следующее определение слова DEPTH (стр. 151):
   : DEPTH  S0 @ SP@ 2+ - 2/ ;
   : DEPTH  S0 @ SP@ 2+ - 2/ ;


Описание и определение слова DEPTH в ядре ФОРТ-ЕС:
Определение слова DEPTH в ядре ФОРТ-ЕС:
<PRE>
<PRE>
DEPTH      ->+N      КОЛИЧЕСТВО ЗНАЧЕНИИ НА СТЕКЕ ДО +N  20
                     Экран номер 20
                     Экран номер 20
( 31.03.86    SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH )
( 31.03.86    SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH )


: DEPTH ( ->+N)  SP@ S0 @ SWAP - 2/ ;
: DEPTH ( ->+N)  SP@ S0 @ SWAP - 2/ ;
</PRE>
Определение слова DEPTH в FORTH ИТЭФ:
<PRE>
            HEAD    205Q,'DEPT',310Q,DEPTH,$COL          ; DEPTH
            DW  SZERO,AT,SPAT,TWOP,SUB,DIV2,SEMI
</PRE>
</PRE>


== Ссылки ==
== Ссылки ==
* {{Исходник|DEPTH|DEPTH}}
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1200 DEPTH] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1497 FDEPTH (f-depth)] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1200 DEPTH] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1497 FDEPTH (f-depth)] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth-standard.org/standard/core/DEPTH DEPTH] и [http://forth-standard.org/standard/float/FDEPTH FDEPTH (f-depth)] в черновике Forth 200x ''(англ.)''
* Слова [http://www.forth200x.org/documents/html3/core/DEPTH.html DEPTH] и [http://www.forth200x.org/documents/html3/floating/FDEPTH.html FDEPTH (f-depth)] в черновике Forth 200x ''(англ.)''




{{нет иллюстраций}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Стековые манипуляции Каллисто]]
[[Категория:Стековые манипуляции Каллисто]]
[[Категория:Средства отладки Каллисто]]
[[Категория:Средства отладки Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/DEPTH