Опубликован: 21.08.2007 | Уровень: для всех | Доступ: платный
Лекция 4:

Машинно ориентированное программирование

< Лекция 3 || Лекция 4: 123 || Лекция 5 >

Операции заполнения памяти предусматривают следующие вариции кодов росписи:

FILL       char
ERASE      0
BLANK      пробел

Возможно пересылка блоков памяти:

CMOVE
CMOVE>
MOVE

Арифметические операции:

+
-
*
/   (n1 n2 -- n3)

*/  (n1 n2 n3 -- n4)   n1 * n2/n3  "рабочая лошадка", эффективно выполняющая 
  часто встречающееся сочетание операций.

*
OVER
-
SWAP
DUP
*
+
Пример 4.1. Программа для подсчета по формуле (x,y,z -> x**2 + y * z - x)

Новые слова можно вводить в форме:

: имя опр;
:SQ
DUP   (-- A,B,B)
* SWAP (B**2, A)
DUP * (B**2, A**2)
+;   (B**2 + A**2)
Пример 4.2. Введение нового слова SQ для подсчета суммы квадратов (A,B -> A**2 + B**2)

Интерпретирующий автомат для языка Форт по сложности сравним с автоматом для ассемблера. Основная разница - словарь Форта хранит определения произвольной длины, а таблица меток ассемблера хранит адреса фиксированного размера.

Средства размещения слов в словарь:

IMMEDIATE (--) немедленное исполнение в любом состоянии
FORGET         убрать из словаря

Обозначение систем счисления:

DECIMAL
HEX
LITERAL

Моделирование переменных и констант:

VARIABLE  имя               - переменная в словарь 
знач имя !                  - присвоить = запись в переменную
имя @              (a -- x) - чтение в стек из переменной
знач CONSTANT имя  (X --)   - создание константы по стеку
имя                (-- x)   - конст -> стек
знач VALUE имя     (X --)   - переименование

Богато представлена логика и операции сравнения:

and 
or 
xor 
not
< 
= 
> 
<>
<= 
>= 
<>
0< 
0= 
0>

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

усл IF часть-то THEN
усл IF часть-то   ELSE часть-иначе  THEN  

зн-0   CASE
зн-1  OF  ветвь1 ENDOF
---
---

[ветвь-иначе]   ENDCASE

Моделирование циклов:

кон-зн нач-зн DO тело-цикла  LOOP
кон-зн нач-зн DO тело-цикла шаг +LOOP
              ?DO - м.б. ни разу

I - текущее значение счетчика
J - внешний цикл

UNLOOP сброс счетчика
LEAVE  выход из цикла

... BEGIN ... AGAIN  бесконечный цикл
          ... усл WHILE ... REPEAT ...
                   !ложь______!
... BEGIN ... усл UNTIL
                   !ист________!

Манипулирование стеками:

n STACK s   новый стек S размера N
ws PUSH     запись в стек
 S POP      перенос в стек данных
 s POP  
 s ST@      скопировать
 s ST!      сброс стека

Современные реализации Форта предоставляют средства работы с очередями, управления компиляцией, локализации переменных, обработки структур данных. Системы программирования на Форте содержат препроцессор CREATE, средства работы со статическими динамическими метками, объявления отношений, связывания имен, подключения альтернативных словарей и использования системных вызовов. Возможно работа на уровне обычного ассемблера:

CODE ... ENDCODE

KEY    ввод с клавиатуры
KEY?   есть ли символ?
ACCEPT [=EXPECT ]  ввод строки
PARSE  адр слова в буфере и его длина
< Лекция 3 || Лекция 4: 123 || Лекция 5 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Илья Ардов
Илья Ардов

Добрый день!

Я записан на программу. Куда высылать договор и диплом?

Данила Некрасов
Данила Некрасов
Россия, Пермь, ПНИПУ
Сергей Федоров
Сергей Федоров
Россия