Слово /

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

/ (дробь, целочисленное деление) — стандартное слово Каллисто.

/              ( y x −− n )                         Делить нацело. n := Trunc [y/x]

Целочисленное деление y на x, помещение целого частного n в стек.

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

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

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

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

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

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

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

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

     /            n1 n2 -- n3                   83            "divide"
          n3 is the floor of the quotient of n1 divided by the divisor
          n2.  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"

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

/              n1 n2 -- n3                   178           "divide"
    Divide  n1  by n2 and leave the quotient n3.   n3  is  rounded
    toward zero.

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

/             n1  n2  ---  quot                L0
       Leave the signed quotient of n1/n2.

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

1368 ;#Slash
1369 ; /                ( y x −− n )                         Делить нацело. n := Trunc [y/x]
1370 LSLASH:         .DB     1
1371                 .TEXT   "/"                     ; ( делимое делитель −− частное )
1372                 .DW     LFDIV                   ; ( a b −− [a/b] )
1373 SLASH:          .DW     JSLASH
1374 JSLASH:         RM3 MB 1 + MA M3                ; Целочисленное деление делимого x1 на делитель x2, положить частное n на стек.
1375                 KRMA KRMB / KINT KMA
1376                 KGOTO9

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

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

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

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

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

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

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

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

Определение слова / в FORTH ИТЭФ:

             HEAD    201Q,,257Q,SLASH,$COL                ; /
             DW  SLMOD,SWAP,DROP,SEMI

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


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


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