Текущая версия |
Ваш текст |
Строка 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}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0370 Слово 2DROP (two-drop) в стандарте ANS Forth] ''(англ.)'' |
| * См. слова [[DROP]], [[2DUP]], [[2SWAP]]
| | * [http://www.forth200x.org/documents/html/core.html#core:2DROP Слово 2DROP (two-drop) в черновике Forth 200x] ''(англ.)'' |
| * Слово [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] ''(англ.)''
| |
|
| |
|
|
| |
|
Строка 81: |
Строка 12: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Стековые манипуляции Каллисто]] | | [[Категория:Стековые манипуляции Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE]]
| |
| [[Категория:2012 CORE]]
| |