Материал из ПМК вики
Версия от 17:06, 10 ноября 2017; AtH (обсуждение | вклад) (→‎Реализация)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

> (больше) — стандартное слово Каллисто.

>              ( x1 x2 −− f )                       Больше. f равно −1 если и только если x1 больше, чем x2.

Ввод слова >[править]

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

> в стандарте ANS Forth[править]

 6.1.0540   >                               "greater-than"                  CORE
            ( n1 n2 -- flag )
            flag - true, если и только если n1 - больше чем n2.

        См.: 6.2.2350 U>.

История[править]

Чак Мур в 1970 году, в версии Форта размером в 2К×48бит для Burroughs B-5500 слово > называл GREATER

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

     >            n1 n2 -- flag                 83      "greater-than"
          flag is true if n1 is greater than n2.
                  -32768 32767 > must return false.
                  -32768 0 > must return false.

> в стандарте Forth-79 (англ.)[править]

>              n1 n2 -- flag                 102     "greater-than"
    True if n1 is greater than n2.

> в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

>             n1  n2  ---  f                   L0
       Leave a true flag if n1 is greater than n2; otherwise a false flag.

Реализация[править]

В Каллисто 1.0 примитив > вычитает два числа на вершине стека и сравнивает результат с нулём:

 886 STT:            1 +/− PKM03  KGOTO9             ; [SP] := −1; NEXT
…
 920 ;#More
 921 ; >                ( y x −− f )                         Больше. f равно −1 если и только если y больше, чем x.
 922 LGREAT:         .DB     1
 923                 .TEXT   ">"                     ; ( a b −− флаг )
 924                 .DW     LLESS
 925 GREAT:          .DW     JGREAT
 926 JGREAT:         RM3 M8  1 + M3
 927                 KRM8 PKRM03 −  FX>=0 STT
 928                 Cx PKM03  KGOTO9

Реализация из SP-Forth 4.20:

CODE > ( n1 n2 -- flag ) \ 94
\ flag "истина" тогда и только тогда, когда n1 больше n2.
       CMP  EAX, [EBP]
       SETGE AL
       AND  EAX,  # 1
       A; 0x48 C, \ DEC  EAX
       LEA  EBP, 4 [EBP]
       RET
END-CODE

Советская реализация[править]

У Баранова-Ноздрунова приводится следующее определение слова > (стр. 26):

 : >   ( A,B ---> A > B )    - 0> ;

Описание слова > в ядре ФОРТ-ЕС (определение в блоке № 19 почему-то отсутствует):

>         N1,N2->F F НЕ НУЛЬ, ЕСЛИ N1 БОЛЬШЕ N2                 19

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

             HEAD    201Q,,276Q,GREAT                     ; >
             POP   AX
             POP   CX
             CMP   AX, CX
	     JL    TRUE
             JMP   FALSE

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

Ссылки[править]


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


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