Слово /MOD

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Самурай /MOD (старший брат слэша).
Картинка из книги Лео Броди «Starting FORTH»

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

Деление с остатком a на b.

Ввод слова /MOD

В режиме NUM последовательно нажмите клавиши  F   ÷     Р-ГРД-Г   ÷   5   K 

Для возврата в режим NUM нажмите синюю клавишу  P .

/MOD в стандарте ANS Forth

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

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

     /MOD         n1 n2 -- n3 n4                83        "divide-mod"
          n3 is the remainder and n4 the floor of the quotient of n1
          divided 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 n4                198       "divide-mod"
    Divide  n1 by n2 and leave the remainder n3 and  quotient  n4.
    n3 has the same sign as n1.

/MOD в fig-FORTH Release 1 glossary, май 1979 (англ.)

/MOD           n1 n2 --- rem quot               L0
       Leave the remainder and signed quotient of n1/n2. The remainder has
       the sign of the dividend.

История

Впервые слово /MOD появилось в Форте 1971-73 годах, когда Чак Мур перенёс транслятор на DEC PDP-11 в National Radio Astronomy Observatory (англ., Шарлотсвилл).

Слово /MOD возвращало и частное, и остаток — являясь идеальным для определения местонахождения записей в файле.

Реализация

Слово /MOD в FORTH ИТЭФ и ФОРТ-ЕС определено одинаково, через примитив M/

Вот описания и определения этих двух слов в ФОРТ-ЕС:

M/        *  D,N1->N2,N3       ОСТАТОК N2 И ЧАСТНОЕ N3 ОТ   16
                       ДЕЛЕНИЯ ДВОЙНОГО D НА ОДИНАРНОЕ N1
/MOD      N1,N2->N3,N4            ОСТАТОК N3 И ЧАСТНОЕ N4   16
                                      ОТ ДЕЛЕНИЯ N1 НА N2

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

CODE M/ ( D,N1->N2,N3) 1 POP, 14 LRW1 SAL, RSTACK RTWO SR,
 RW1 32 SRDA, 0,RW1 LR,  RW1 1 DR, 0 1 XR, 0 0 LTR, ?M IF,
 RW1 1 AR, RW2 0 BCTR, THEN, RW1 FIRST 4 +(, STH,
 RW1 RM2 LR,  ( ЧАСТНОЕ) POPPUT1 B,   END-CODE

: /MOD ( N1,N2->N3,N4) >R S>D R> M/ ;

Вот определения этих двух слов в FORTH ИТЭФ:

            HEAD     202Q,'M',257Q,MSLAS                  ; M/
            POP   CX          ; Делимое
            POP   DX
            POP   AX
            IDIV  CX
            PUSH  DX
            PUSH  AX

            NEXT
            ...
             HEAD    204Q,'/MO',304Q,SLMOD,$COL           ; /MOD
             DW  TOR,STOD,FROMR,MSLAS,SEMI

Ссылки


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