2DROP: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показаны 33 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''2DROP''' — стандартное слово [[Каллисто]]. | '''2DROP''' (два-сбросить, читается «два-дроп») — стандартное слово [[Каллисто]]. Снять со [[Стек данных|стека]] два верхних элемента. | ||
2DROP ( y x -- ) Убрать пару чисел. | |||
Удаляет из [[Стек данных|стека]] два верхних [[Десятичное число|числа]]. | |||
== Ввод слова 2DROP == | |||
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 6|{{Серая клавиша|6}}]] | |||
Для возврата в [[режим NUM]] нажмите [[Клавиша P|синюю клавишу {{Синяя клавиша|P}}]]. | |||
== 2DROP в стандарте ANS Forth == | |||
6.1.0370 2DROP "two-drop" CORE | |||
( x1 x2 -- ) | |||
Удаляет пару-ячеек x1 x2 из стека. | |||
== История == | |||
В Форте слово 2DROP — одно из самых древних и устоявшихся, не менялось с 1979 года. | |||
В [[Каллисто]] редко возникает необходимость в числовых парах, поэтому слово 2DROP используется реже, чем в классическом Форте. | |||
=== 2DROP в предыдущем стандарте Forth-83 (англ.) === | |||
2DROP 32b -- 79 "two-drop" | |||
32b is removed from the stack. | |||
=== 2DROP в стандарте Forth-79 (англ.) === | |||
2DROP d -- "two-drop" | |||
Drop the top double number on the stack. | |||
== Реализация == | |||
В [[Каллисто|Каллисто 1.0]] слово 2DROP реализовано, как [[примитив]]: | |||
<pre> | |||
1946 ;#TwoDROP | |||
1947 ; 2DROP ( y x −− ) Убрать пару чисел. | |||
1948 LDDROP: .DB 5 | |||
1949 .TEXT "2DROP" ; ( dd −− ) | |||
1950 .DW LROT | |||
1951 DDROP: .DW JDDROP | |||
1952 JDDROP: 2 PGOTO NDROP ; Удалить из стека число двойной длины. | |||
… | |||
2053 NDROP: RM3 + M3 ; А сюда сваливается 2DROP | |||
2054 KGOTO9 | |||
</pre> | |||
Но при необходимости 2DROP можно легко выразить через [[DROP]]: | |||
: 2DROP ( y x --) DROP DROP ; | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
CODE 2DROP ( x1 x2 -- ) \ 94 | |||
\ Убрать со стека пару ячеек x1 x2. | |||
MOV EAX, 4 [EBP] | |||
LEA EBP, 8 [EBP] | |||
RET | |||
END-CODE | |||
</pre> | |||
=== Советская реализация === | |||
Слово 2DROP в ядре ФОРТ-ЕС было определено через [[DROP]] | |||
<PRE> | |||
2DROP WD-> СНЯТЬ ВЕРХНЕЕ ДВОЙНОЕ ЗНАЧЕНИЕ 12 | |||
Экран номер 12 | |||
( 31.03.86 ROLL PICK 2DUP 2DROP 2SWAP 2OVER 2ROT ) | |||
: 2DROP ( WD->) DROP DROP ; | |||
</PRE> | |||
В FORTH ИТЭФ слово 2DROP было [[примитив]]ом, вот его определение: | |||
<PRE> | |||
HEAD 205Q,'2DRO',320Q,DDROP ; 2DROP | |||
DRO: ADD SP, 4 | |||
NEXT | |||
</PRE> | |||
== Ссылки == | |||
* {{Исходник|TwoDROP|2DROP}} | |||
* См. слова [[DROP]], [[2DUP]], [[2SWAP]] | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0370 2DROP (two-drop)] в стандарте ANS Forth ''(англ.)'' | |||
* Слово [http://forth-standard.org/standard/core/TwoDROP 2DROP (two-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://www.forth.com/starting-forth/sf2/sf2.html How to Get Results] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
{{нет иллюстраций}} | {{нет иллюстраций}} | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Стековые манипуляции Каллисто]] | [[Категория:Стековые манипуляции Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE]] | |||
[[Категория:2012 CORE]] |
Текущая версия от 16:39, 10 ноября 2017
2DROP (два-сбросить, читается «два-дроп») — стандартное слово Каллисто. Снять со стека два верхних элемента.
2DROP ( y x -- ) Убрать пару чисел.
Удаляет из стека два верхних числа.
Ввод слова 2DROP[править]
В режиме NUM последовательно нажмите клавиши 2 Р-ГРД-Г K × 5 6
Для возврата в режим NUM нажмите синюю клавишу P .
2DROP в стандарте ANS Forth[править]
6.1.0370 2DROP "two-drop" CORE ( x1 x2 -- ) Удаляет пару-ячеек x1 x2 из стека.
История[править]
В Форте слово 2DROP — одно из самых древних и устоявшихся, не менялось с 1979 года.
В Каллисто редко возникает необходимость в числовых парах, поэтому слово 2DROP используется реже, чем в классическом Форте.
2DROP в предыдущем стандарте Forth-83 (англ.)[править]
2DROP 32b -- 79 "two-drop" 32b is removed from the stack.
2DROP в стандарте Forth-79 (англ.)[править]
2DROP d -- "two-drop" Drop the top double number on the stack.
Реализация[править]
В Каллисто 1.0 слово 2DROP реализовано, как примитив:
1946 ;#TwoDROP 1947 ; 2DROP ( y x −− ) Убрать пару чисел. 1948 LDDROP: .DB 5 1949 .TEXT "2DROP" ; ( dd −− ) 1950 .DW LROT 1951 DDROP: .DW JDDROP 1952 JDDROP: 2 PGOTO NDROP ; Удалить из стека число двойной длины. … 2053 NDROP: RM3 + M3 ; А сюда сваливается 2DROP 2054 KGOTO9
Но при необходимости 2DROP можно легко выразить через DROP:
: 2DROP ( y x --) DROP DROP ;
Реализация из SP-Forth 4.20:
CODE 2DROP ( x1 x2 -- ) \ 94 \ Убрать со стека пару ячеек x1 x2. MOV EAX, 4 [EBP] LEA EBP, 8 [EBP] RET END-CODE
Советская реализация[править]
Слово 2DROP в ядре ФОРТ-ЕС было определено через DROP
2DROP WD-> СНЯТЬ ВЕРХНЕЕ ДВОЙНОЕ ЗНАЧЕНИЕ 12 Экран номер 12 ( 31.03.86 ROLL PICK 2DUP 2DROP 2SWAP 2OVER 2ROT ) : 2DROP ( WD->) DROP DROP ;
В FORTH ИТЭФ слово 2DROP было примитивом, вот его определение:
HEAD 205Q,'2DRO',320Q,DDROP ; 2DROP DRO: ADD SP, 4 NEXT
Ссылки[править]
- Исходный текст слова 2DROP в Каллисто Классик 1.0
- См. слова DROP, 2DUP, 2SWAP
- Слово 2DROP (two-drop) в стандарте ANS Forth (англ.)
- Слово 2DROP (two-drop) в черновике Forth 200x (англ.)
- ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- How to Get Results в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |