¦X¦: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 7: | Строка 7: | ||
== Ввод слова |X| == | == Ввод слова |X| == | ||
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 0|{{Серая клавиша|0}}]] [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]] | В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 0|{{Серая клавиша|0}}]] [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]] | ||
== ABS и FABS в стандарте ANS Forth == | == ABS и FABS в стандарте ANS Forth == | ||
Строка 43: | Строка 40: | ||
== Реализация == | == Реализация == | ||
В [[Каллисто|Каллисто 1.0]] слово |X| является «обёрткой» вокруг команды ЭКВМ [[K ABS|К |x|]]: | |||
<pre> | |||
1453 ;#ABS | |||
1454 ; |X| ( x −− p ) Вычислить модуль. p := |x| | |||
1455 LABS: .DB 3 | |||
1456 .TEXT "|X|" ; ( x −− |x| ) | |||
1457 .DW LSTOD | |||
1458 ABS: .DW JABS ; Получить абсолютное значение. | |||
1459 JABS: PKRM03 KABS PKM03 KGOTO9 ; Обёртка вокруг K |x| | |||
</pre> | |||
Реализации из SP-Forth 4.20: | |||
<pre> | |||
CODE ABS ( n -- u ) \ 94 | |||
\ u - абсолютная величина n. | |||
MOV ECX, EAX | |||
SAR ECX, 1F | |||
XOR EAX, ECX | |||
SUB EAX, ECX | |||
RET | |||
END-CODE | |||
</pre> | |||
<pre> | |||
CODE FABS | |||
FABS | |||
RET | |||
END-CODE | |||
</pre> | |||
=== Советская реализация === | |||
У Баранова-Ноздрунова приводится следующее определение слова |X| (стр. 28): | У Баранова-Ноздрунова приводится следующее определение слова |X| (стр. 28): | ||
: |X| ( A ---> абс A ) ↑ 0< IF /−/ THEN ; | : |X| ( A ---> абс A ) ↑ 0< IF /−/ THEN ; |
Текущая версия от 17:32, 10 ноября 2017
|X| (абсолютное значение) — традиционное слово Каллисто. Вычисление модуля.
|X| ( x −− p ) Вычисление модуля. p := |x|
p — абсолютная величина числа x, т.е. тоже значение числа, но непременно положительное.
Для нуля и положительных чисел p=x, для отрицательных чисел p=−x.
Ввод слова |X|[править]
В режиме NUM последовательно нажмите клавиши F П Р-ГРД-Г 0 P F П
ABS и FABS в стандарте ANS Forth[править]
6.1.0690 ABS "abs" CORE ( n -- u ) u - абсолютное значение n. 12.6.2.1474 FABS "f-abs" FLOATING EXT ( F: r1 -- r2 ) or ( r1 -- r2 ) r2 - абсолютное значение r1.
История[править]
В отличие от Форта-83, в Каллисто абсолютная величина -32768 равна 32768.
В Каллисто имя |X| восходит к надписи на клавиатуре советского ПМК «Электроника МК-61», выпущенного в 1984 году.
Аналогичное слово во всех стандартах Форта, начиная с 1979 года, называется ABS. Также каллистянское |X| выполняет роль стандартного слова FABS
ABS в предыдущем стандарте Forth-83 (англ.)[править]
ABS n -- u 79 "absolute" u is the absolute value of n. If n is -32,768 then u is the same value. See: "arithmetic, two's complement"
ABS в стандарте Forth-79 (англ.)[править]
ABS n1 -- n1 108 "absolute" Leave the absolute value of a number.
ABS в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
ABS n --- u L0 Leave the absolute value of n as u.
Реализация[править]
В Каллисто 1.0 слово |X| является «обёрткой» вокруг команды ЭКВМ К |x|:
1453 ;#ABS 1454 ; |X| ( x −− p ) Вычислить модуль. p := |x| 1455 LABS: .DB 3 1456 .TEXT "|X|" ; ( x −− |x| ) 1457 .DW LSTOD 1458 ABS: .DW JABS ; Получить абсолютное значение. 1459 JABS: PKRM03 KABS PKM03 KGOTO9 ; Обёртка вокруг K |x|
Реализации из SP-Forth 4.20:
CODE ABS ( n -- u ) \ 94 \ u - абсолютная величина n. MOV ECX, EAX SAR ECX, 1F XOR EAX, ECX SUB EAX, ECX RET END-CODE
CODE FABS FABS RET END-CODE
Советская реализация[править]
У Баранова-Ноздрунова приводится следующее определение слова |X| (стр. 28):
: |X| ( A ---> абс A ) ↑ 0< IF /−/ THEN ;
Слово |X| в ядре ФОРТ-ЕС работало лишь с целыми числами. Оно называлось ABS и определено через арифметику числовых пар, отсутствующую в Каллисто:
ABS N1->N2 АБСОЛЮТНАЯ ВЕЛИЧИНА 17 Экран номер 17 ( 31.03.86 NEGATE ABS + - 1+ 1- 2+ 2- +! 1+! ) : ABS ( N1->+N2) S>D DABS DROP ;
В FORTH ИТЭФ слово |X| также называлось ABS, работало с целыми и было примитивом. Вот его определение:
HEAD 203Q,'AB',323Q,ABS ; ABS POP AX CMP AX, 0 JNS AB NEG AX AB: PUSH AX NEXT
Ссылки[править]
- Исходный текст слова |X| в Каллисто Классик 1.0
- См. слово ЗН
- Абсолютная величина в Википедии
- Слова ABS (abs) и FABS (f-abs) в стандарте ANS Forth (англ.)
- Слова ABS (abs) и FABS (f-abs) в черновике Forth 200x (англ.)
- ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Philosophy of Fixed Point в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |