DEPTH
Перейти к навигации
Перейти к поиску
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 (англ.)