¦X¦: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
(не показаны 4 промежуточные версии этого же участника)
Строка 7: Строка 7:
== Ввод слова |X| ==
== Ввод слова |X| ==
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]   [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 0|{{Серая клавиша|0}}]]   [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]   [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 0|{{Серая клавиша|0}}]]   [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]
== Детали реализации ==
Слово |X| является «обёрткой» вокруг команды ЭКВМ [[K ABS|К |x|]].


== ABS и FABS в стандарте ANS Forth ==
== ABS и FABS в стандарте ANS Forth ==
Строка 23: Строка 20:


== История ==
== История ==
В отличие от Форта-83, в [[Каллисто]] абсолютная величина -32768 равна 32768. В Форте−79 и последующих называется ABS
В отличие от Форта-83, в [[Каллисто]] абсолютная величина -32768 равна 32768.


В [[Каллисто]] имя |X| восходит к надписи на клавиатуре советского ПМК [[Электроника МК-61|«Электроника МК-61»]], выпущенного в 1984 году.
В [[Каллисто]] имя |X| восходит к надписи на клавиатуре советского ПМК [[Электроника МК-61|«Электроника МК-61»]], выпущенного в 1984 году.
Аналогичное слово во всех стандартах Форта, начиная с 1979 года, называется ABS. Также каллистянское |X| выполняет роль стандартного слова FABS


=== ABS в предыдущем стандарте Forth-83 (англ.) ===
=== ABS в предыдущем стандарте Forth-83 (англ.) ===
Строка 41: Строка 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 ;
Строка 80: Строка 108:
[[Категория:Арифметические операции Каллисто]]
[[Категория:Арифметические операции Каллисто]]
[[Категория:Одноместные операции Каллисто]]
[[Категория:Одноместные операции Каллисто]]
[[Категория:Традиционные слова]]
[[Категория:Адаптированные слова]]

Текущая версия от 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

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


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


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