Библиотека knigago >> Компьютеры: Языки и системы программирования >> Forth >> Учебное пособие по языку ФОРТ


Дибаш Каинчин Современная проза Книга «Последняя надежда ссыльного Евсея Боровикова» — это захватывающая и трогательная история о человеческом духе и силе семьи перед лицом невзгод. Евсей — ссыльный дворянин, отправленный в Сибирь в начале 19 века. Оторванный от своих любимых и сломленный несправедливостью своего приговора, он борется за выживание в суровых условиях русской тайги. Единственным его утешением является надежда на то, что его жена сможет отыскать его и освободить. Автор...

СЛУЧАЙНАЯ КНИГА

Северное сияние. Нора Робертс
- Северное сияние

Жанр: Остросюжетные любовные романы

Год издания: 2005

Серия: Фантазии женщины среднего возраста

ИТФ «Технофорт» - Учебное пособие по языку ФОРТ

Учебное пособие по языку ФОРТ
Книга - Учебное пособие по языку ФОРТ.   ИТФ «Технофорт»  - прочитать полностью в библиотеке КнигаГо
Название:
Учебное пособие по языку ФОРТ
ИТФ «Технофорт»

Жанр:

Литература ХX века (эпоха Социальных революций), Современные российские издания, Программирование: прочее, Forth

Изадано в серии:

неизвестно

Издательство:

ИТФ «Технофорт»

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Учебное пособие по языку ФОРТ"

Язык программирования Форт (от английского FORTH) был изобретен Чарльзом Муром в 70-x годах для создания программного обеспечения управляющих устройств. В настоящее время Форт широко используется при решении следующих задач:
• разработка и тестирование встроенного оборудования;
• управление станками, роботами, медицинскими приборами;
• разработка трансляторов и операционных систем;
• системы управления базами данных;
• задачи машинной графики;
• экспертные системы, в том числе экспертные системы реального времени.

ИТФ «Технофорт», Санкт-Петербург 1993 Б. Посадская, д.9А Тел./факс: 233-34-10 тел. 238-82-88 эл. почта: Forth@forthi.spb.su

Читаем онлайн "Учебное пособие по языку ФОРТ". [Страница - 2]

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

3. Арифметический стек

B языке Форт арифметическим или основным стеком (или просто стеком) называется участок оперативной памяти, используемый для размещения ЦЕЛЫХ чисел — аргументов и результатов операций языка.

Ha каждое число в стеке отводится 2 байта. Числа на стеке могут восприниматься различным образом в зависимости от того, какое слово их использует. Обычно они трактуются как числа из диапазона от -2**15 до 2**15-1, но есть слова, которые воспринимают их как числа от 0 до 2**16-1.

Хранимые в стеке числа упорядочены по положению. Стек функционирует по принципу "последним занесен - первым выбран" (LIFO). Будем говорить, что при добавлении числа оно заносится СПРАВА от имеющихся, начиная от ДНА стека; при удалении снимается крайнее правое число с ВЕРШИНЫ стека.

При пользовании стеком вся ответственность за его состояние ложится на программиста. Для того чтобы зрительно согласовать стековые изменения при выполнении слов, удобно применять так называемую стековую нотацию. Действие слов будем показывать на диаграмме

        стек ДО операции  -->  стек ПОСЛЕ операции

причем не затрагиваемую операцией часть стека будем изображать многоточием. Для содержимого стека введем следующие обозначения:

  малая латинская буква    - значение в общем смысле

  n                        - число

  d                        - число двойной длины

  c                        - символ

  addr                     - адрес памяти

Выполнение слова, представляющего собой запись числа, добавляет в стек это число. Слово "." (точка) снимает число с вершины стека и печатает его. Очень полезное слово ".S" печатает весь стек, оставляя его неизменным.

Некоторые операции со стеком:

  DUP      ...        a              -->  ...  a  a

  DROP     ...        a              -->  ...

  SWAP     ...        a  b           -->  ...  b  a

  OVER     ...        a  b           -->  ...  a  b  a

  ROT      ...        a  b  e        -->  ...  e  e  a

  -ROT     ...        a  b  e        -->  ...  e  a  b

  NIP      ...        a  b           -->  ...  b

  TUCK     ...        a  b           -->  ...  b  a  b

  2DROP    ...        a  b           -->  ...

  2DUP     ...        a  b           -->  ...  a  b  a  b

  2SWAP    ...        a  b  e  f     -->  ...  e  f  a  b

  2OVER    ...        a  b  e  f     -->  ...  a  b  e  f  a  b

  PICK     ...        a {n чисел} n  -->  ...  a {те же n чисел} a

  ROLL     ...        a {n чисел} n  -->  ...    {те же n чисел} a

B частности, "0 PICK" эквивалентно "DUP", a "1 PICK" слову "OVER"; "1 ROLL" эквивалентно "SWAP", a "2 ROLL" слову "ROT".

Слово "DEPTH" кладет в стек число, равное глубине стека - количеству элементов, находившихся в стеке перед исполнением этого слова.

Проследим, например, выполнение следующего текста:

          1  2        3  DUP        DEPTH -ROT  2OVER  .S

Выпишем текст в столбик, сопровождая каждое слово состоянием стека после его исполнения:

          1       (  1  )

          2       (  1  2  )

          3       (  1  2  3  )

          DUP     (  1  2  3  3  )

          DEPTH   (  1  2  3  3  4 )

          -ROT    (  1  2  4  3  3  )

          2OVER   (  1  2  4  3  3  2  4 )

Иногда данные на стеке, сформированные одним словом и используемые потом другим словом, будем называть параметрами.

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

Арифметический стек — основное поле для выполнения арифметических действий и хранения промежуточных результатов вычислений. Надо только помнить, что знак операции (точнее слово, обозначающее операцию) пишется ПОСЛЕ того, как аргументы в стеке уже размещены.

Текст

  13  3  - 

помещает в стек число 10, так как слово "-" (минус) извлекает из стека два числа, сперва вычитаемое, потом уменьшаемое, и помещает в стек их разность:

  -               ...  a  b   -->        ...  a-b

C другими операциями все обстоит аналогично

  +            ...  a  b   -->        ...  a+b

  *            ...  a  b   -->        ...  a*b

  ABS          ...  a      -->        ...  |a|

  NEGATE       ...  a      -->        ...  -a

  /            ...  a  b   -->        ...  целая часть

  MOD          ...  a  b   -->        ...  остаток

  /MOD         ...  a  b   --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.