MIN: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
(не показано 28 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''MIN''' — стандартное слово [[Каллисто]]. Нахождение | '''MIN''' (минимум) — стандартное слово [[Каллисто]]. Нахождение меньшего из двух [[Десятичное число|чисел]]. | ||
MIN ( x1 | MIN ( y x −− x1 ) Нахождение меньшего из двух чисел. | ||
x1 := min (x, y) | |||
[[Файл:CallistoMAXMIN2DUP.png|thumb|right|264px|Пример работы слова MIN]] | |||
Слово MIN засылает в [[Стек данных|стек]] [[Десятичное число|число]] x1, которое является наименьшим из двух [[Десятичное число|чисел]] x и y. | |||
== Ввод слова MIN == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите три белые клавиши [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]] | |||
== | == MIN и FMIN в стандарте ANS Forth == | ||
<PRE> | |||
6.1.1880 MIN CORE | |||
( n1 n2 -- n3 ) | |||
n3 меньшее из n1 и n2. | |||
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 в предыдущем стандарте Forth-83 (англ.) === | |||
== 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 в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: | |||
<PRE> | |||
MIN N1,N2->N3 МЕНЬШЕЕ ИЗ ЧИСЕЛ N1 И N2 22 | |||
Экран номер 22 | |||
( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) | |||
CODE MIN ( N1,N2->N3 ) 14 LHRW12 BAL, RW1 RW2 CR, | |||
POP BNH, RW1 RW2 LR, POPPUT1 B, END-CODE | |||
</PRE> | |||
В FORTH ИТЭФ слово 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 | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1880 | * {{Исходник|MIN|MIN}} | ||
* См. слово [[MAX]] | |||
* [http:// | * Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1880 MIN] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1565 FMIN (f-min)] в стандарте ANS Forth ''(англ.)'' | ||
* [http://www. | * Слова [http://forth-standard.org/standard/core/MIN MIN] и [http://forth-standard.org/standard/float/FMIN FMIN (f-min)] в черновике 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]] |
Текущая версия от 17:29, 10 ноября 2017
MIN (минимум) — стандартное слово Каллисто. Нахождение меньшего из двух чисел.
MIN ( y x −− x1 ) Нахождение меньшего из двух чисел. x1 := min (x, y)
Слово MIN засылает в стек число x1, которое является наименьшим из двух чисел x и y.
Ввод слова MIN[править]
В режиме ЛАТ последовательно нажмите три белые клавиши ÷ 7 4
MIN и FMIN в стандарте ANS Forth[править]
6.1.1880 MIN CORE ( n1 n2 -- n3 ) n3 меньшее из n1 и n2. 12.6.1.1565 FMIN "f-min" FLOATING ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 ) r3 меньшее из r1 и r2.
История[править]
MIN в предыдущем стандарте Forth-83 (англ.)[править]
MIN n1 n2 -- n3 79 "min" n3 is the lesser of n1 and n2 according to the operation of < .
MIN в стандарте Forth-79 (англ.)[править]
MIN n1 n2 -- n3 127 "min" Leave the lesser of two numbers.
MIN в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
MIN n1 n2 --- min L0 Leave the smaller of two numbers.
Реализация[править]
В Каллисто 1.0 слово MIN является «обёрткой» вокруг команды ЭКВМ К max:
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
Реализации из SP-Forth 4.20:
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
CODE FMIN \ * MOV EBX, EAX FCOM FSTSW EAX SAHF JA SHORT @@1 FXCH @@1: FFREE ST FINCSTP MOV EAX, EBX RET END-CODE
Советская реализация[править]
Слово MIN в ФОРТ-ЕС было примитивом. Вот его описание и определение:
MIN N1,N2->N3 МЕНЬШЕЕ ИЗ ЧИСЕЛ N1 И N2 22 Экран номер 22 ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) CODE MIN ( N1,N2->N3 ) 14 LHRW12 BAL, RW1 RW2 CR, POP BNH, RW1 RW2 LR, POPPUT1 B, END-CODE
В FORTH ИТЭФ слово MIN также было примитивом, вот его определение:
HEAD 203Q,'MI',316Q,MIN ; MIN POP AX POP CX CMP CX, AX JL DEEP TOP: PUSH AX NEXT DEEP: PUSH CX NEXT
Ссылки[править]
- Исходный текст слова MIN в Каллисто Классик 1.0
- См. слово MAX
- Слова MIN и FMIN (f-min) в стандарте ANS Forth (англ.)
- Слова MIN и FMIN (f-min) в черновике Forth 200x (англ.)
- ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Philosophy of Fixed Point в книге Leo Brodie Starting Forth (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |