Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ



Как вы видели, в Форте аргументы передаются через стек, и
и "." выполняют действия над элементами стека. 16-
битовое представление целого числа является стандартным для

Уровень приложений языка

Скомпилированные слова Форта,
хранящиеся в словаре системы.
Предназначены для программиро-
вания прикладных задач пользователя

Слова, предназначенные для создания
новых слов (определяющие слова), их
компиляции и записи в словарь

Слова, поддерживающие процесс
интерпретации программ, введенных
с клавиатуры или считанных с диска

Слова, реализующие доступ к
             устройствам ввода-вывода:

             клавиатуре и дисплею

* дисководам

Слова, написанные в машинном коде,
которые управляют выполнением
основных операций виртуальной
Форт-машины. Сюда входят:

* слова периода выполнения (т.е.
реализующие процедуры) для опреде-
ляющих и компилирующих слов

* внутренний (адресный) интер-
претатор

Рис. 6.1. Уровни слов Форта

реализаций Форта, ориентированных на 8-разрядный компьютер;
однако в компьютере с 32-разрядным процессором область памяти
для хранения числа (так называемая ячейка) занимает 32 бита.
Несмотря на то что при реализации Форта всегда ориентируются
на некоторый постоянный размер ячейки, сама по себе ее величина
не влияет на определения базовых функций языка. Какой бы ни
была величина ячейки памяти, именно она определяет количество


 


118



разрядов, отводимых для хранения чисел одинарной точности, и
машинных адресов.


Уровень машинной реализации

!                              2+                          CMOVE>                  MOD

2-                           COUNT                 NEGATE

*/                            2/                           D+                            NOT

*/MOD                   <                             D<                             OR

+                             =                            DEPTH                    OVER

+!                            >                             DNEGATE              PICK

> R                          DROP                    R>,

/                               ? DUP                    DEXECUTE            R@

/MOD                    @                           EXIT                         ROLL

0<                            ABS                       FILL                         ROT

0=                           AND                      I                                SWAP

0>                            C!                           J                                 U<

1+                           C@                        MAX                         UM*

1-                            CMOVE                MIN                          UM/MOD

XOR

 

Уровень управления периферийными устройствами

BLOCK                 KEY                       BUFFER               SAVE-BUFFER

CR                         SPACE                   EMIT                    SPACES

EXPECT               TYPE                      FLUSH                 UPDATE

 

Уровень интерпретатора

#                            < #                           FIND                      PAD

#>                           > BODY                 FORGET                QUIT

#S                          > IN                            FORTH                   SIGN

#TIB                     ABORT                  FORTH-83             SPAN

BASE                   HERE                      TIB

(                            BLK                        HOLD                    U.

-TRAILING         CONVERT             LOAD                    WORD

DECIMAL           .(                             DEFINITION

 

Уровень компилятора

+LOOP                 ,                              ."                           :

;                              DO                          LOOP                  VOCABULARY

ABORT"                DOES>                    REPEAT             WHILE

ALLOT                 ELSE                      STATE                [

BEGIN                  IF                            THEN                  [ ' ]

COMPILE             IMMEDIATE         UNTIL                [ COMPILE ]

CONSTANT         LEAVE                   VARIABLE        ]

CREATE               LITERAL


В Форте допустимы числа не только одинарной, но и двойной
точности. Арифметические операции над числами с двойной точ-
ностью не применяются при обработке символьной информации и
поэтому здесь не рассматриваются; их подробное описание можно
найти в литературе, ссылки на которую имеются в библиографии.

Форт включает в себя четыре основных арифметических опе-
рации и несколько их вариаций. Операция вычитания имеет вид:

- ( n 1 n 2 ==> пЗ)

Вычитание n2 из nl и занесение
результата nЗ на стек.

Умножение и деление представляются так:

*  (п1 п2 ==> n З)

Умножение nl на n2 и занесение
результата nЗ в стек.

/ ( п2 ==> пЗ)

Деление nl на п2 и занесение
результата пЗ в стек.

Если нужно получить остаток от деления, то выполняется следую-
щая операция:

/ MO D ( n 1 n 2 ==> r q ) Деление nl на n2 с получением

остатка г и частного q.

Быстрое умножение или деление на 2 позволяют осуществить
такие команды:

2* ( n 1 ==> п2)

Значением n2 является nl, умноженное на 2.

2/ ( n 1 ==> n 2) Значением п2 является nl, деленное на 2.

Результат не округляется - последние цифры просто отбрасы-
ваются.

Часто также применяются слова, которые увеличивают или
уменьшают число на единицу или на два:

1+ ( n 1 ==> n 2)

Увеличение nl на единицу.

2+ ( n 1 ==> n 2)

Увеличение nl на два.

1-  ( n 1 ==> n 2)

Уменьшение nl на единицу.


Рис. 6.2. Слова, предусмотренные стандартом Форт-83


120


121


2- (n1 ==> n2)              Уменьшение n1 на два.

Например, в результате деления 60 на 10 и уменьшения частного
на единицу, т.е. выполнения слов

60 10 / 1 -

получим число 5. Поскольку в качестве чисел в Форте ис-
пользуются целые со знаком, имеется слово для получения
значения с противоположным знаком:

NEGATE ( n 1 ==> n 2)     Результатом является n2 = -nl.

Кроме приведенных выше основных арифметических опера-
ций, в Форте предусмотрены слова для нахождения наибольшего и
наименьшего из двух чисел:


где 14 - шестнадцатиричное представление десятичного числа 20.
Число, записанное в шестнадцатиричной системе счисления, поме-
чается предшествующим знаком доллара ($). Например, число 20 в
шестнадцатиричной системе счисления будет выглядеть как $14.


Поделиться:



Последнее изменение этой страницы: 2019-03-29; Просмотров: 222; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.02 с.)
Главная | Случайная страница | Обратная связь