DROP: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 15 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''DROP''' (сбросить, читается «дроп») — стандартное слово [[Каллисто]]. Снять со [[Стек данных|стека]] верхний элемент. | '''DROP''' (сбросить, читается «дроп») — стандартное слово [[Каллисто]]. Снять со [[Стек данных|стека]] верхний элемент. | ||
DROP ( x | DROP ( x −− ) Убрать. Удалить верхний элемент стека. | ||
Удаляет число x из [[Стек данных|стека]]. | Удаляет число x из [[Стек данных|стека]]. | ||
Строка 7: | Строка 6: | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 6|{{Серая клавиша|6}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 6|{{Серая клавиша|6}}]] | ||
== | == DROP и FDROP в стандарте ANS Forth == | ||
<PRE> | |||
6.1.1260 DROP CORE | 6.1.1260 DROP CORE | ||
( x -- ) | ( x -- ) | ||
Удаляет x из стека. | Удаляет x из стека. | ||
12.6.1.1500 FDROP "f-drop" FLOATING | 12.6.1.1500 FDROP "f-drop" FLOATING | ||
( F: r -- ) or ( r -- ) | ( F: r -- ) or ( r -- ) | ||
Удаляет r со стека с плавающей точкой. | Удаляет r со стека с плавающей точкой. | ||
</PRE> | |||
== История == | |||
В Форте слово DROP — одно из самых древних и устоявшихся. Входит под именем DROP во все стандарты Форта, включая fig-Форт и Форт-79. | |||
Впервые оно появилось в 1964 году под именем ; в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 ([https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальная ускорительная лаборатория SLAC], [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордский университет]). | |||
В Форте FSP88M слово DROP было известно под именем DR | |||
== DROP в предыдущем стандарте Forth-83 (англ.) == | === DROP в предыдущем стандарте Forth-83 (англ.) === | ||
DROP 16b -- 79 | DROP 16b -- 79 | ||
16b is removed from the stack. | 16b is removed from the stack. | ||
== DROP в стандарте Forth-79 (англ.) == | === DROP в стандарте Forth-79 (англ.) === | ||
DROP n -- 233 | DROP n -- 233 | ||
Drop the top number from the stack. | Drop the top number from the stack. | ||
== DROP в fig-FORTH Release 1 glossary, май 1979 (англ.) == | === DROP в fig-FORTH Release 1 glossary, май 1979 (англ.) === | ||
DROP n --- L0 | DROP n --- L0 | ||
Drop the number from the stack. | Drop the number from the stack. | ||
== | == Реализация == | ||
В | В [[Каллисто]] стек содержит [[Десятичное число|десятичные числа]] — достаточно вместительные, чтобы популярные в ранних версиях Форта числа двойной длины не использовались. Когда их приходится использовать для совместимости с Фортом, слово DROP осуществляет простейший переход от двойной точности к обычной — действие, обратное действию [[S⟩D|S>D]]. | ||
Более точная реализация D>S должна проверять верхний элемент на отрицательность (32768 и больше), а также включать умножение на 65536. | |||
<pre> | |||
1954 ;#DROP | |||
1955 ; DROP ( x −− ) Убрать. Удалить верхний элемент стека. | |||
1956 LDROP: .DB 4 | |||
1957 .TEXT "DROP" ; ( x −− ) | |||
1958 .DW LDDROP | |||
1959 DROP: .DW JDROP ; JDROP: 1 RM3 + M3 KGOTO9 | |||
… | |||
2052 JDROP: 1 ; Да, это обработчик DROP | |||
2053 NDROP: RM3 + M3 ; А сюда сваливается 2DROP | |||
2054 KGOTO9 | |||
</pre> | |||
Реализации из SP-Forth 4.20: | |||
<pre> | |||
0 VALUE 'DROP_V | |||
… | |||
: 'DROP 'DROP_V ; | |||
… | |||
: 'DROP | |||
\ CR ." NEW 'DROP " CURFILE @ ASCIIZ> TYPE SPACE CURSTR @ . | |||
S" DROP" TC-FINDOUT >VIRT TC-LIT, ; IMMEDIATE | |||
</pre> | |||
<pre> | |||
' DROP >VIRT CONSTANT 'DROP | |||
</pre> | |||
<pre> | |||
CODE DROP ( x -- ) \ 94 | |||
\ Убрать x со стека. | |||
MOV EAX, [EBP] | |||
LEA EBP, 4 [EBP] | |||
RET | |||
END-CODE | |||
' DROP TO 'DROP_V | |||
</pre> | |||
<pre> | |||
CODE FDROP \ * | |||
FSTP ST(0) | |||
RET | |||
END-CODE | |||
</pre> | |||
=== Советская реализация === | |||
Слово DROP в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | |||
<PRE> | |||
DROP W-> УБРАТЬ СО СТЕКА ВЕРХНЕЕ ЗНАЧЕНИЕ 9 | |||
Экран номер 9 | Экран номер 9 | ||
( 31.03.86 DUP ?DUP DROP SWAP OVER >R R> R@ RDROP ROT ) | ( 31.03.86 DUP ?DUP DROP SWAP OVER >R R> R@ RDROP ROT ) | ||
CODE DROP ( W-> ) RSTACK RTWO AR, RNEXT BR, END-CODE | CODE DROP ( W-> ) RSTACK RTWO AR, RNEXT BR, END-CODE | ||
</PRE> | |||
В FORTH ИТЭФ слово DROP также было [[примитив]]ом, вот его определение: | |||
<PRE> | |||
HEAD 204Q,'DRO',320Q,DROP ; DROP | |||
DRP: ADD SP, 2 | |||
NEXT | |||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
* {{Исходник|DROP|DROP}} | |||
* См. слова [[2DROP]], [[Слово ↑|↑]], [[Слово ↔|↔]], [[OVER]], [[ROT]] | * См. слова [[2DROP]], [[Слово ↑|↑]], [[Слово ↔|↔]], [[OVER]], [[ROT]] | ||
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1260 DROP] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1500 FDROP (f-drop)] в стандарте ANS Forth ''(англ.)'' | * Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1260 DROP] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1500 FDROP (f-drop)] в стандарте ANS Forth ''(англ.)'' | ||
* Слова [http:// | * Слова [http://forth-standard.org/standard/core/DROP DROP] и [http://forth-standard.org/standard/float/FDROP FDROP (f-drop)] в черновике Forth 200x ''(англ.)'' | ||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\02.WYPOLNENIE%20ARIFMETITESKIH%20OPERAZIJ ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | * [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\02.WYPOLNENIE%20ARIFMETITESKIH%20OPERAZIJ ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | ||
* [http://www.forth.com/starting-forth/sf2/sf2.html How to Get Results] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | * [http://www.forth.com/starting-forth/sf2/sf2.html How to Get Results] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | ||
Строка 63: | Строка 112: | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Стековые манипуляции Каллисто]] | [[Категория:Стековые манипуляции Каллисто]] | ||
[[Категория: | [[Категория:Стандартные слова]] | ||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 21:37, 13 ноября 2017
DROP (сбросить, читается «дроп») — стандартное слово Каллисто. Снять со стека верхний элемент.
DROP ( x −− ) Убрать. Удалить верхний элемент стека.
Удаляет число x из стека.
Ввод слова DROP[править]
В режиме ЛАТ последовательно нажмите четыре клавиши K × 5 6
DROP и FDROP в стандарте ANS Forth[править]
6.1.1260 DROP CORE ( x -- ) Удаляет x из стека. 12.6.1.1500 FDROP "f-drop" FLOATING ( F: r -- ) or ( r -- ) Удаляет r со стека с плавающей точкой.
История[править]
В Форте слово DROP — одно из самых древних и устоявшихся. Входит под именем DROP во все стандарты Форта, включая fig-Форт и Форт-79.
Впервые оно появилось в 1964 году под именем ; в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 (Национальная ускорительная лаборатория SLAC, Стэнфордский университет).
В Форте FSP88M слово DROP было известно под именем DR
DROP в предыдущем стандарте Forth-83 (англ.)[править]
DROP 16b -- 79 16b is removed from the stack.
DROP в стандарте Forth-79 (англ.)[править]
DROP n -- 233 Drop the top number from the stack.
DROP в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
DROP n --- L0 Drop the number from the stack.
Реализация[править]
В Каллисто стек содержит десятичные числа — достаточно вместительные, чтобы популярные в ранних версиях Форта числа двойной длины не использовались. Когда их приходится использовать для совместимости с Фортом, слово DROP осуществляет простейший переход от двойной точности к обычной — действие, обратное действию S>D.
Более точная реализация D>S должна проверять верхний элемент на отрицательность (32768 и больше), а также включать умножение на 65536.
1954 ;#DROP 1955 ; DROP ( x −− ) Убрать. Удалить верхний элемент стека. 1956 LDROP: .DB 4 1957 .TEXT "DROP" ; ( x −− ) 1958 .DW LDDROP 1959 DROP: .DW JDROP ; JDROP: 1 RM3 + M3 KGOTO9 … 2052 JDROP: 1 ; Да, это обработчик DROP 2053 NDROP: RM3 + M3 ; А сюда сваливается 2DROP 2054 KGOTO9
Реализации из SP-Forth 4.20:
0 VALUE 'DROP_V … : 'DROP 'DROP_V ; … : 'DROP \ CR ." NEW 'DROP " CURFILE @ ASCIIZ> TYPE SPACE CURSTR @ . S" DROP" TC-FINDOUT >VIRT TC-LIT, ; IMMEDIATE
' DROP >VIRT CONSTANT 'DROP
CODE DROP ( x -- ) \ 94 \ Убрать x со стека. MOV EAX, [EBP] LEA EBP, 4 [EBP] RET END-CODE ' DROP TO 'DROP_V
CODE FDROP \ * FSTP ST(0) RET END-CODE
Советская реализация[править]
Слово DROP в ФОРТ-ЕС было примитивом. Вот его описание и определение:
DROP W-> УБРАТЬ СО СТЕКА ВЕРХНЕЕ ЗНАЧЕНИЕ 9 Экран номер 9 ( 31.03.86 DUP ?DUP DROP SWAP OVER >R R> R@ RDROP ROT ) CODE DROP ( W-> ) RSTACK RTWO AR, RNEXT BR, END-CODE
В FORTH ИТЭФ слово DROP также было примитивом, вот его определение:
HEAD 204Q,'DRO',320Q,DROP ; DROP DRP: ADD SP, 2 NEXT
Ссылки[править]
- Исходный текст слова DROP в Каллисто Классик 1.0
- См. слова 2DROP, ↑, ↔, OVER, ROT
- Слова DROP и FDROP (f-drop) в стандарте ANS Forth (англ.)
- Слова DROP и FDROP (f-drop) в черновике Forth 200x (англ.)
- ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- How to Get Results в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |