?DUP: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
'''?DUP''' — стандартное слово [[Каллисто]].
'''?DUP''' (вопрос-дуп) — стандартное слово [[Каллисто]]. Осуществляет операцию [[↑ (Каллисто)|↑]] если x≠0.
?DUP          ( x -- 0 | x x )


Осуществляет операцию [[↑ (Каллисто)|]] если x<>0
Дублирует верхнее значение, если это не ноль, и оставляет [[Стек данных|стек]] в исходном состоянии, если на вершине ноль.


== Детали реализации ==
Слово ?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

Ссылки


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.