Редактирование: MIN

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
[[Файл:CallistoMAXMIN2DUP.png|thumb|right|264px|Пример работы слова MIN]]
'''MIN''' (минимум) — стандартное слово [[Каллисто]]. Нахождение меньшего из двух [[Десятичное число|чисел]].
'''MIN''' (минимум) — стандартное слово [[Каллисто]]. Нахождение меньшего из двух [[Десятичное число|чисел]].
  MIN            ( y x −− x1 )                       Нахождение меньшего из двух чисел.
  MIN            ( x1 x2 −− x3 )                     Нахождение меньшего из двух чисел. x3 := min (x1, x2)
                                                    x1 := min (x, y)
Засылает в [[Стек данных|стек]] [[Десятичное число|число]] x3, которое является наименьшим из двух [[Десятичное число|чисел]] x1 и x2.
[[Файл:CallistoMAXMIN2DUP.png|thumb|right|264px|Пример работы слова MIN]]
Слово MIN засылает в [[Стек данных|стек]] [[Десятичное число|число]] x1, которое является наименьшим из двух [[Десятичное число|чисел]] x и y.


== Ввод слова MIN ==
== Ввод слова MIN ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите три белые клавиши [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]]
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите три белые клавиши [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]]


== MIN и FMIN в стандарте ANS Forth ==
== Детали реализации ==
<PRE>
Слово является «обёрткой» вокруг команды ЭКВМ [[К max]].
6.1.1880  MIN                                                            CORE
            ( n1 n2 -- n3 )
            n3 меньшее из n1 и n2.


== FMIN в стандарте ANS Forth ==
  12.6.1.1565  FMIN                      "f-min"                        FLOATING
  12.6.1.1565  FMIN                      "f-min"                        FLOATING
             ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             r3 меньшее из r1 и r2.
             r3 меньшее из r1 и r2.
</PRE>


== История ==
== MIN в стандарте ANS Forth ==
=== MIN в предыдущем стандарте Forth-83 (англ.) ===
6.1.1880  MIN                                                            CORE
            ( n1 n2 -- n3 )
            n3 меньшее из n1 и n2.
 
== MIN в предыдущем стандарте Forth-83 (англ.) ==
       MIN          n1 n2 -- n3                  79              "min"
       MIN          n1 n2 -- n3                  79              "min"
           n3 is the lesser of n1 and n2 according to the operation of
           n3 is the lesser of n1 and n2 according to the operation of
           < .
           < .


=== MIN в стандарте Forth-79 (англ.) ===
== MIN в стандарте Forth-79 (англ.) ==
  MIN            n1 n2 -- n3                  127              "min"
  MIN            n1 n2 -- n3                  127              "min"
     Leave the lesser of two numbers.
     Leave the lesser of two numbers.


=== MIN в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== MIN в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  MIN          n1  n2  ---  min                L0
  MIN          n1  n2  ---  min                L0
         Leave the smaller of two numbers.
         Leave the smaller of two numbers.


== Реализация ==
== Реализация ==
В [[Каллисто|Каллисто 1.0]] слово MIN является «обёрткой» вокруг команды ЭКВМ [[К max]]:
<pre>
1542 ;#MIN
1543 ; MIN              ( y x −− x1 )                        Меньшее из двух чисел. x1 := min (x, y)
1544 LMIN:          .DB    3
1545                .TEXT  "MIN"                  ; ( a b −− min )
1546                .DW    LINVERT
1547 MIN:            .DW    JMIN
1548 JMIN:          RM3 MB  1 +  MA M3
1549                KRMB KRMA KMAX <−> KMA          ; Выделить минимум, обёртка вокруг K MAX (МК−161).
1550                KGOTO9
</pre>
Реализации из SP-Forth 4.20:
<pre>
CODE MIN ( n1 n2 -- n3 ) \ 94
\ n3 - меньшее из n1 и n2.
ARCH-P6 [IF]
    MOV    EDX, [EBP]
    CMP    EDX, EAX
    CMOVL  EAX, EDX
[ELSE]   
    CMP    EAX, [EBP]
    JG # ' DROP
[THEN]   
    LEA EBP, 4 [EBP]
    RET
END-CODE
</pre>
<pre>
CODE FMIN \ *
      MOV EBX, EAX
      FCOM
      FSTSW  EAX
      SAHF
      JA  SHORT @@1
      FXCH
@@1:  FFREE  ST
      FINCSTP
      MOV EAX, EBX
      RET
END-CODE
</pre>
=== Советская реализация ===
Слово MIN в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение:
Слово MIN в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение:
<PRE>
<PRE>
Строка 111: Строка 67:




{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Математические функции Каллисто]]
[[Категория:Математические функции Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/MIN