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

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

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

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


== Ввод слова MAX ==
Выделение максимума из двух чисел.
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите три клавиши [[Клавиша ÷|{{Серая клавиша|÷}}]] {{ШГ←}} [[Клавиша 0|{{Серая клавиша|0}}]]


== MAX и FMAX в стандарте ANS Forth ==
<PRE>
6.1.1870  MAX                                                            CORE
            ( n1 n2 -- n3 )
            n3 большее из n1 и n2.
12.6.1.1562  FMAX                      "f-max"                        FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
            r3 большее из r1 и r2.
</PRE>
== История ==
В [[Каллисто]] имя MAX восходит к надписи на клавиатуре советского ПМК [[Электроника МК-61|«Электроника МК-61»]], выпущенного в 1984 году.
=== MAX в предыдущем стандарте Forth-83 (англ.) ===
      MAX          n1 n2 -- n3                  79              "max"
          n3 is the greater of n1 and n2 according to the operation of
          > .
=== MAX в стандарте Forth-79 (англ.) ===
MAX            n1 n2 -- n3                  218              "max"
    Leave the greater of two numbers.
=== MAX в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
MAX          n1  n2  ---  max                L0
        Leave the greater of two numbers.
== Реализация ==
В [[Каллисто|Каллисто 1.0]] слово MAX является «обёрткой» вокруг команды ЭКВМ [[К max]]:
<pre>
1552 ;#MAX
1553 ; MAX              ( y x −− x1 )                        Большее из двух чисел. x1 := max (x, y)
1554 LMAX:          .DB    3
1555                .TEXT  "MAX"                  ; ( a b −− max )
1556                .DW    LMIN
1557 MAX:            .DW    JMAX
1558 JMAX:          RM3 MB  1 +  MA M3
1559                KRMB KRMA KMAX KMA              ; Выделить максимум, обёртка вокруг K MAX.
1560                KGOTO9
</pre>
Реализации из SP-Forth 4.20:
<pre>
CODE MAX ( n1 n2 -- n3 ) \ 94
\ n3 - большее из n1 и n2.
ARCH-P6 [IF]
    MOV    EDX, [EBP]
    CMP    EDX, EAX
    CMOVG  EAX, EDX
[ELSE]   
    CMP    EAX, [EBP]
    JL # ' DROP
[THEN]   
    LEA EBP, 4 [EBP]
    RET
END-CODE
</pre>
<pre>
CODE FMAX \ *
      MOV EBX, EAX
      FCOM
      FSTSW  EAX
      SAHF
      JB  SHORT @@1
      FXCH
@@1:  FFREE  ST
      FINCSTP
      MOV EAX, EBX
      RET
END-CODE
</pre>
=== Советская реализация ===
Слово MAX в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение:
<PRE>
МАХ          N1,N2->N3 БОЛЬШЕЕ ИЗ ЧИСЕЛ N1 И N2                22
                    Экран номер 22
( 31.03.86  FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)
CODE MAX  ( N1,N2->N3 )  14 LHRM12 BAL, RW1 RW2 CR,
  POP BNL,  RW1 RW2 LR,  POPPUT1 B,  END-CODE
</PRE>
В FORTH ИТЭФ слово MAX также было [[примитив]]ом и опиралось на часть кода [[примитив]]а [[MIN]], вот их определения:
<PRE>
            HEAD    203Q,'MI',316Q,MIN                  ; MIN
            POP  AX
            POP  CX
            CMP  CX,  AX
            JL  DEEP
  TOP:    PUSH AX
            NEXT
  DEEP:    PUSH CX
            NEXT
            HEAD    203Q,'MA',330Q,MAX                  ; MAX
            POP  AX
            POP  CX
            CMP  CX, AX
            JGE  DEEP
            JMP  TOP
</PRE>


== Ссылки ==
== Ссылки ==
* {{Исходник|MAX|MAX}}
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1870 Слово MAX в стандарте ANS Forth] ''(англ.)''
* См. слово [[MIN]]
* [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1562 Слово FMAX (f-max) в стандарте ANS Forth] ''(англ.)''
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1870 MAX] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1562 FMAX (f-max)] в стандарте ANS Forth ''(англ.)''
* [http://www.forth200x.org/documents/html/core.html#core:MAX Слово MAX в черновике Forth 200x] ''(англ.)''
* Слова [http://forth-standard.org/standard/core/MAX MAX] и [http://forth-standard.org/standard/float/FMAX FMAX (f-max)] в черновике Forth 200x ''(англ.)''
* [http://www.forth200x.org/documents/html/float.html#floating:FMAX Слово FMAX (f-max) в черновике Forth 200x] ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\05.OPERAZII%20NAD%20ZELYMI%20TISLAMI ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf5/sf5.html The Philosophy of Fixed Point] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




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

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

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