DEPTH: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 39 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''DEPTH''' — стандартное слово [[Каллисто]]. | '''DEPTH''' (глубина, читается «дэпф») — стандартное слово [[Каллисто]]. Размер [[Стек данных|стека]]. | ||
DEPTH ( −− U ) Глубина стека. | |||
U −− количество значений на стеке данных до исполнения DEPTH. | |||
[[Файл:dSDepthPickRot.png|thumb|right|264px|Пример работы слова DEPTH]] | |||
Кладёт на [[Стек данных|стек]] число элементов [[Стек данных|стека]] до исполнения этой команды. | |||
== Ввод слова DEPTH == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]] | |||
== DEPTH и FDEPTH в стандарте ANS Forth == | |||
<pre> | |||
6.1.1200 DEPTH CORE | |||
( -- +n ) | |||
+n - количество одно-ячеечных значений, содержавшихся на стеке | |||
данных перед тем, как +n было помещено на стек. | |||
12.6.1.1497 FDEPTH "f-depth" FLOATING | |||
( -- +n ) | |||
+n - число значений, содержащихся на отделенном по умолчанию стеке | |||
с плавающей точкой. Если числа с плавающей точкой сохраняются на | |||
стеке данных, +n является текущим числом возможных значений с | |||
плавающей точкой, содержащихся на стеке данных. | |||
</pre> | |||
== История == | |||
В Форте FSP88M это слово известно под именем DPT | |||
Английское слово [http://www.lingvo-online.ru/ru/Translate/en-ru/depth depth] означает «глубина». | |||
=== DEPTH в предыдущем стандарте Forth-83 (англ.) === | |||
DEPTH -- +n 79 | |||
+n is the number of 16-bit values contained in the data | |||
stack before +n was placed on the stack. | |||
=== DEPTH в стандарте Forth-79 (англ.) === | |||
DEPTH -- n 238 | |||
Leave the number of the quantity of 16-bit values contained in | |||
the data stack, before n added. | |||
== Реализация == | |||
<pre> | |||
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 | |||
\ Стек завернут в кольцо!!! | |||
\ Нумерация регистров в сопроцессоре, видимо, следующая (experimental) | |||
\ 0 7 6 5 4 3 2 1 , где 0 - дно стека | |||
\ FSTSW возвращает номер регистра | |||
\ Пришлось это обработать... | |||
</pre> | |||
=== Советская реализация === | |||
Юрий Семёнов приводит следующее определение слова DEPTH (стр. 151): | |||
: DEPTH S0 @ SP@ 2+ - 2/ ; | |||
Описание и определение слова DEPTH в ядре ФОРТ-ЕС: | |||
<PRE> | |||
DEPTH ->+N КОЛИЧЕСТВО ЗНАЧЕНИИ НА СТЕКЕ ДО +N 20 | |||
Экран номер 20 | |||
( 31.03.86 SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH ) | |||
: 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> | |||
== Ссылки == | == Ссылки == | ||
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1200 | * {{Исходник|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-standard.org/standard/core/DEPTH DEPTH] и [http://forth-standard.org/standard/float/FDEPTH FDEPTH (f-depth)] в черновике Forth 200x ''(англ.)'' | |||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | |||
[[Категория:Стековые манипуляции Каллисто]] | [[Категория:Стековые манипуляции Каллисто]] | ||
[[Категория:Средства отладки Каллисто]] | [[Категория:Средства отладки Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 19:14, 10 ноября 2017
DEPTH (глубина, читается «дэпф») — стандартное слово Каллисто. Размер стека.
DEPTH ( −− U ) Глубина стека. U −− количество значений на стеке данных до исполнения DEPTH.
Кладёт на стек число элементов стека до исполнения этой команды.
Ввод слова DEPTH[править]
В режиме ЛАТ последовательно нажмите клавиши K ИП 6 2 ПП
DEPTH и FDEPTH в стандарте ANS Forth[править]
6.1.1200 DEPTH CORE ( -- +n ) +n - количество одно-ячеечных значений, содержавшихся на стеке данных перед тем, как +n было помещено на стек. 12.6.1.1497 FDEPTH "f-depth" FLOATING ( -- +n ) +n - число значений, содержащихся на отделенном по умолчанию стеке с плавающей точкой. Если числа с плавающей точкой сохраняются на стеке данных, +n является текущим числом возможных значений с плавающей точкой, содержащихся на стеке данных.
История[править]
В Форте FSP88M это слово известно под именем DPT
Английское слово depth означает «глубина».
DEPTH в предыдущем стандарте Forth-83 (англ.)[править]
DEPTH -- +n 79 +n is the number of 16-bit values contained in the data stack before +n was placed on the stack.
DEPTH в стандарте Forth-79 (англ.)[править]
DEPTH -- n 238 Leave the number of the quantity of 16-bit values contained in the data stack, before n added.
Реализация[править]
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
Реализации из SP-Forth 4.20:
: DEPTH ( -- +n ) \ 94 \ +n - число одинарных ячеек, находящихся на стеке данных перед \ тем как туда было помещено +n. SP@ S0 @ - NEGATE 1 CELLS / \ значение может быть отрицательным, поэтому '>CELLS' вместо '/' нельзя ;
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 \ Стек завернут в кольцо!!! \ Нумерация регистров в сопроцессоре, видимо, следующая (experimental) \ 0 7 6 5 4 3 2 1 , где 0 - дно стека \ FSTSW возвращает номер регистра \ Пришлось это обработать...
Советская реализация[править]
Юрий Семёнов приводит следующее определение слова DEPTH (стр. 151):
: DEPTH S0 @ SP@ 2+ - 2/ ;
Описание и определение слова DEPTH в ядре ФОРТ-ЕС:
DEPTH ->+N КОЛИЧЕСТВО ЗНАЧЕНИИ НА СТЕКЕ ДО +N 20 Экран номер 20 ( 31.03.86 SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH ) : DEPTH ( ->+N) SP@ S0 @ SWAP - 2/ ;
Определение слова DEPTH в FORTH ИТЭФ:
HEAD 205Q,'DEPT',310Q,DEPTH,$COL ; DEPTH DW SZERO,AT,SPAT,TWOP,SUB,DIV2,SEMI
Ссылки[править]
- Исходный текст слова DEPTH в Каллисто Классик 1.0
- Слова DEPTH и FDEPTH (f-depth) в стандарте ANS Forth (англ.)
- Слова DEPTH и FDEPTH (f-depth) в черновике Forth 200x (англ.)