Слово /: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(Новая страница: «'''/''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова Ка…»)
 
 
(не показано 36 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''/''' — стандартное слово [[Каллисто]].
'''/''' (дробь, целочисленное деление) — стандартное слово [[Каллисто]].
/              ( y x −− n )                        Делить нацело. n := Trunc [y/x]
Целочисленное деление y на x, помещение целого частного n в [[Стек данных|стек]].
 
== Ввод слова / ==
В [[Режим NUM|режиме NUM]] последовательно нажмите две клавиши [[Клавиша F|{{Оранжевая клавиша|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.
 
== Реализация ==
<pre>
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
</pre>
Реализация из SP-Forth 4.20:
<pre>
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
</pre>
 
=== Советская реализация ===
Слово / в FORTH ИТЭФ и ФОРТ-ЕС определено одинаково, через [[слово /MOD]].
 
Вот описание и определение слова / в ядре ФОРТ-ЕС:
<PRE>
/        N1,N2->N3 ЧАСТНОЕ ОТ ДЕЛЕНИЯ N1 НА N2                18
 
                    Экран номер 18
( 03.10.84    М* M/ * /MOD / MOD */MOD */)
 
: / ( N1,N2->N3)  /MOD SWAP DROP ;
</PRE>
Определение слова / в FORTH ИТЭФ:
<PRE>
            HEAD    201Q,,257Q,SLASH,$COL                ; /
            DW  SLMOD,SWAP,DROP,SEMI
</PRE>
 
== Ссылки ==
* {{Исходник|Slash|/}}
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0230 / (slash)] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/Div / (slash)] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\02.WYPOLNENIE%20ARIFMETITESKIH%20OPERAZIJ ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf2/sf2.html How to Get Results] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
 


{{нет иллюстраций}}
{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Арифметические операции Каллисто]]
[[Категория:Операции целочисленного деления Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]

Текущая версия от 16:58, 10 ноября 2017

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

/              ( 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

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


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


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