0⟩: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 5: Строка 5:
== Ввод слова 0> ==
== Ввод слова 0> ==
В [[Режим NUM|режиме NUM]] последовательно нажмите три клавиши [[Клавиша 0|{{Серая клавиша|0}}]]   [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
В [[Режим NUM|режиме NUM]] последовательно нажмите три клавиши [[Клавиша 0|{{Серая клавиша|0}}]]   [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
== Детали реализации ==
Слово 0> в качестве флага «истинно» возвращает -1, что позволяет использовать результат f в логических операция [[AND]], [[OR]], [[XOR]] и [[NOT]]. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова [[Каллисто]], возвращающие флаги, используют в качестве флага «истинно» -1.


== 0> в стандарте ANS Forth ==
== 0> в стандарте ANS Forth ==
Строка 26: Строка 23:


== Реализация ==
== Реализация ==
Слово 0> в качестве флага «истинно» возвращает -1, что позволяет использовать результат f в логических операция [[AND]], [[OR]], [[XOR]] и [[NOT]]. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова [[Каллисто]], возвращающие флаги, используют в качестве флага «истинно» -1.
<pre>
877 STF:            Cx PKM03  KGOTO9                ; [SP] := 0; NEXT
878
879 ;#ZeroMore
880 ; 0>              ( x −− f )                          Проверить на положительность.
881 LZGRET:        .DB    2
882                .TEXT  "0>"                    ; ( x −− флаг )
883                .DW    LZEQU
884 ZGRET:          .DW    JZGRET
885 JZGRET:        PKRM03 +/−  PX<0 STF
886 STT:            1 +/− PKM03  KGOTO9            ; [SP] := −1; NEXT
</pre>
=== Советская реализация ===
В FORTH ИТЭФ слово 0&gt; было [[примитив]]ом, вот его определение:
В FORTH ИТЭФ слово 0&gt; было [[примитив]]ом, вот его определение:
<PRE>
<PRE>

Версия от 07:01, 9 ноября 2017

0> (нуля больше) — стандартное слово Каллисто. Проверить, положительное ли число.

0>             ( x -- f )                      Проверка на положительность.

Сравнивает x с нулём и засылает в стек флаг «истинно» (f=-1), если x>0 и флаг «ложно» (f=0), если x≤0.

Ввод слова 0>

В режиме NUM последовательно нажмите три клавиши  0     F   ИП 

0> в стандарте ANS Forth

6.2.0280   0>                          "zero-greater"                  CORE EXT
           ( n -- flag )
           flag - true, если и только если n - больше нуля.

История

Удивительно, но это слово чуть «менее» стандартно, чем 0< — входящее в ядро CORE стандарта 1996 года и готовящегося стандарта Форта

0> в предыдущем стандарте Forth-83 (англ.)

     0>           n -- flag                     83      "zero-greater"
          flag is true if n is greater than zero.

0> в стандарте Forth-79 (англ.)

0>             n -- flag                     118     "zero-greater"
    True if n is greater than zero.

Реализация

Слово 0> в качестве флага «истинно» возвращает -1, что позволяет использовать результат f в логических операция AND, OR, XOR и NOT. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова Каллисто, возвращающие флаги, используют в качестве флага «истинно» -1.

 877 STF:            Cx PKM03  KGOTO9                ; [SP] := 0; NEXT
 878 
 879 ;#ZeroMore
 880 ; 0>               ( x −− f )                           Проверить на положительность.
 881 LZGRET:         .DB     2
 882                 .TEXT   "0>"                    ; ( x −− флаг )
 883                 .DW     LZEQU
 884 ZGRET:          .DW     JZGRET
 885 JZGRET:         PKRM03 +/−  PX<0 STF
 886 STT:            1 +/− PKM03  KGOTO9             ; [SP] := −1; NEXT

Советская реализация

В FORTH ИТЭФ слово 0> было примитивом, вот его определение:

             HEAD    202Q,'0',276Q,ZGRET                  ; 0>
             POP   AX
             CMP   AX, 0
             JG    TRUE
             JMP   FALSE

Метки TRUE и FALSE см. в определении слова 0=

Ссылки


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


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