DEPTH: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 46: | Строка 46: | ||
3911 .DW LCOPY ; Положить на стек полное количество чисел, хранившихся на стеке до исполнения DEPTH | 3911 .DW LCOPY ; Положить на стек полное количество чисел, хранившихся на стеке до исполнения DEPTH | ||
3912 DEPTH: .DW CALL, SZERO,UAT, SPAT,ONEP,SUB, EXIT | 3912 DEPTH: .DW CALL, SZERO,UAT, SPAT,ONEP,SUB, EXIT | ||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<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 | |||
</pre> | </pre> | ||
Версия от 17:40, 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:
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 (стр. 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 (англ.)