MOD

Материал из ПМК вики
Перейти к: навигация, поиск

MOD (остаток) — стандартное слово Каллисто.

MOD            ( y x −− x1 )                        Получение остатка от деления y на x. x1 := y mod x

Получение остатка x1 от деления y на x и занесение его в стек.

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

В режиме ЛАТ последовательно нажмите три клавиши  ÷   5   K 

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

 6.1.1890   MOD                                                             CORE
            ( n1 n2 -- n3 )
            Делит n1 на n2, возвращает остаток n3 одна-ячейка. Неопределенная 
            ситуация существует, если n2 нулевое. Если n1 и n2 отличаются по 
            знаку, возвращенный результат определенный реализацией будет такой 
            же самый как и возвращенный фразой >R S>D R> FM/MOD DROP или фразой 
            >R S>D R> SM/REM DROP.

        См.: 3.2.2.1 Целочисленное деление.

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

Слово MOD является одним из самых древних сохранившихся слов Форта. Оно было реализовано Чаком Муром для 2К×48бит версии Форта на Burroughs B-5500 в 1970 году.

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

     MOD          n1 n2 -- n3                   83
          n3 is the remainder after dividing n1 by the divisor n2.  n3
          has the same sign as n2 or is zero.  An error condition
          results if the divisor is zero or if the quotient falls
          outside of the range {-32,768..32,767}.  See:  "division,
          floored"

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

MOD            n1 n2 -- n3                   104
    Divide n1 by n2,  leaving the remainder n3, with the same sign
    as n1.

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

MOD           n1  n2  ---  mod                 L0
       Leave the remainder of n1/n2, with the same sign as n1.

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

1378 ;#MOD
1379 ; MOD              ( y x −− x1 )                        Получить остаток от деления y на x. x1 := y mod x
1380 LMOD:           .DB     3
1381                 .TEXT   "MOD"                   ; ( делимое делитель −− остаток )
1382                 .DW     LSLASH
1383 MOD:            .DW     JMOD
1384 JMOD:           RM3 MB 1 + MA M3                ; Получить остаток x1 от деления делимого y на делитель x.
1385                 KRMA ENT KRMB / KINT KRMB ∗ − KMA
1386                 KGOTO9

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

CODE MOD ( n1 n2 -- n3 ) \ 94
\ Делить n1 на n2, получить остаток n3.
\ Исключительная ситуация возникает, если n2 равен нулю.
\ Если n1 и n2 различаются по знаку - возвращаемый результат зависит от
\ реализации.
       MOV ECX, EAX
       MOV EAX, [EBP]
       CDQ
       IDIV ECX
       LEA EBP, 4 [EBP]
       MOV EAX, EDX
       RET
END-CODE

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

Слово MOD в ядре ФОРТ-ЕС реализовано через слово /MOD

MOD         N1,N2->N3 ОСТАТОК ОТ ДЕЛЕНИЯ N1 НА N2               18

                     Экран номер 18
( 03.10.84     М* M/ * /MOD / MOD */MOD */)

: MOD ( N1,N2->N3) /MOD DROP ;

Слово MOD в FORTH ИТЭФ реализовано через слово /MOD

             HEAD    203Q,'MO',304Q,$MOD,$COL             ; MOD
             DW  SLMOD,DROP,SEMI

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


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


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