?DUP: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''?DUP''' — стандартное слово [[Каллисто]]. | '''?DUP''' (вопрос-дуп) — стандартное слово [[Каллисто]]. Осуществляет операцию [[↑ (Каллисто)|↑]] если x≠0. | ||
?DUP ( x -- 0 | x x ) | |||
Дублирует верхнее значение, если это не ноль, и оставляет [[Стек данных|стек]] в исходном состоянии, если на вершине ноль. | |||
== Детали реализации == | |||
Слово ?DUP часто используется перед [[IF]]. | |||
== ?DUP в стандарте ANS Forth == | == ?DUP в стандарте ANS Forth == | ||
Строка 8: | Строка 11: | ||
( x -- 0 | x x ) | ( x -- 0 | x x ) | ||
Дублирует x, если оно ненулевое. | Дублирует x, если оно ненулевое. | ||
== ?DUP в предыдущем стандарте Forth-83 (англ.) == | == ?DUP в предыдущем стандарте Forth-83 (англ.) == | ||
Строка 14: | Строка 16: | ||
or 0 -- 0 | or 0 -- 0 | ||
Duplicate 16b if it is non-zero. | Duplicate 16b if it is non-zero. | ||
== ?DUP в стандарте Forth-79 (англ.) == | == ?DUP в стандарте Forth-79 (англ.) == | ||
?DUP n -- n ( n ) 184 "query-dupe" | ?DUP n -- n ( n ) 184 "query-dupe" | ||
Duplicate n if it is non-zero. | Duplicate n if it is non-zero. | ||
== −DUP в fig-FORTH Release 1 glossary, май 1979 (англ.) == | == −DUP в fig-FORTH Release 1 glossary, май 1979 (англ.) == | ||
Строка 26: | Строка 26: | ||
This is usually used to copy a value just before IF, to eliminate | This is usually used to copy a value just before IF, to eliminate | ||
the need for an ELSE part to drop it. | the need for an ELSE part to drop it. | ||
== Реализация ?DUP == | == Реализация ?DUP == | ||
У Баранова-Ноздрунова приводится следующее описание слова ?DUP (стр. 29): | У Баранова-Ноздрунова приводится следующее описание слова ?DUP (стр. 29): | ||
: ?DUP ( A ---> A,A / 0 ) ↑ IF ↑ THEN ; | : ?DUP ( A ---> A,A / 0 ) ↑ IF ↑ THEN ; | ||
== История == | == История == | ||
Строка 39: | Строка 37: | ||
== Ссылки == | == Ссылки == | ||
* См. слово [[↑ (Каллисто)|↑]] | |||
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0630 Слово ?DUP (question-dupe) в стандарте ANS Forth] ''(англ.)'' | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0630 Слово ?DUP (question-dupe) в стандарте ANS Forth] ''(англ.)'' | ||
* [http://www.forth200x.org/documents/html/core.html#core:qDUP Слово ?DUP (question-dupe) в черновике Forth 200x] ''(англ.)'' | * [http://www.forth200x.org/documents/html/core.html#core:qDUP Слово ?DUP (question-dupe) в черновике Forth 200x] ''(англ.)'' | ||
Строка 47: | Строка 46: | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Стековые манипуляции Каллисто]] | [[Категория:Стековые манипуляции Каллисто]] | ||
[[Категория: | [[Категория:Описание бета-версии Каллисто]] |
Версия от 04:45, 28 октября 2015
?DUP (вопрос-дуп) — стандартное слово Каллисто. Осуществляет операцию ↑ если x≠0.
?DUP ( x -- 0 | x x )
Дублирует верхнее значение, если это не ноль, и оставляет стек в исходном состоянии, если на вершине ноль.
Детали реализации
Слово ?DUP часто используется перед IF.
?DUP в стандарте ANS Forth
6.1.0630 ?DUP "question-dupe" CORE ( x -- 0 | x x ) Дублирует x, если оно ненулевое.
?DUP в предыдущем стандарте Forth-83 (англ.)
?DUP 16b -- 16b 16b 79 "question-dupe" or 0 -- 0 Duplicate 16b if it is non-zero.
?DUP в стандарте Forth-79 (англ.)
?DUP n -- n ( n ) 184 "query-dupe" Duplicate n if it is non-zero.
−DUP в fig-FORTH Release 1 glossary, май 1979 (англ.)
-DUP n1 -- n1 (if zero) n1 -- n1 n1 (non-zero) L0 Reproduce n1 only if it is non-zero. This is usually used to copy a value just before IF, to eliminate the need for an ELSE part to drop it.
Реализация ?DUP
У Баранова-Ноздрунова приводится следующее описание слова ?DUP (стр. 29):
: ?DUP ( A ---> A,A / 0 ) ↑ IF ↑ THEN ;
История
Программы, написанные для fig-Форта, должны заменить старое наименование −DUP на новое ?DUP
В Форте FSP88M это слово известно под именем ?DU
Ссылки
- См. слово ↑
- Слово ?DUP (question-dupe) в стандарте ANS Forth (англ.)
- Слово ?DUP (question-dupe) в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |