Текущая версия |
Ваш текст |
Строка 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>
| |
| | |
| == Ссылки ==
| |
| * {{Исходник|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]]
| |