|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[7] NEGATE / MOD /MOD a a a a a a a --> --> --> --> --> --> --> a+b a*b Ia -a целая часть остаток остаток целая часть В трех последних словах имеются в виду остаток и целая часть частного от деления а на Ь. Так, при делении 26 на 7 имеем: 26 7 26 7 26 7 / -> 3 MOD --> 5 /MOD --> 5 3 Имеются специальные слова для действий с 1 и 2 (они выполняются немного быстрее) 1+... а--> ... а+1 Аналогично работают "I-11, "2+", "2-", "2*", "2/". Следующие слова выполняют поразрядные логические операции над двоичным представлением чисел; в этих операциях числа трактуются как наборы из шестнадцати битов. AND...ab-->...a AND b( И ) OR...ab-->...a OR b( ИЛИ ) NOT...а-->...NOT а( НЕ ) X0R...ab-->...a XOR b(ИСКЛЮЧАЮЩЕЕ ИЛИ ) 4.6Ввод и вывод 4.7Хранение чисел в памяти 4.8Операторы сравнения и ветвления 4.9Организация циклов 4.10Символьные строки 4.11Определение новых слов Одно из главных достоинств языка Форт заключается в его расширяемости, то есть программист может расширять базовый набор слов форт-системы, определяя новые слова через уже определенные. Слова, которые указывают форт-системе, что пользователь заводит новое слово, называются ОПРЕДЕЛЯЮЩИМИ словами. Наиболее употребительное определяющее слово это ":" (двоеточие). Формально соответствующее определение (или описание) выглядит следующим образом: : имя тело ; •"имя" как раз и есть новое придуманное слово, •"тело" представляет собой перечень через пробелы уже имеющихся в форт-системе слов; совокупность их функций образует те действия, которые будут выполнены при исполнении данного слова, версия 26 октября 2005 г.ФОРТ • наличие слова ";" (точка с запятой) обязательно, оно завершает определение. Например, текст : S2 DUP * SWAP DUP * + ; определяет слово "S2", вычисляющее сумму квадратов двух чисел из стека S2... a b --> ...a*a+b*b Если в теле определения встретятся слова, которых нет в словаре, система напечатает ошибочное слово со знаком -?. При этом вся наработанная информация о новом слове исчезает. При разработке новых слов нужно внимательно следить за изменениями стека. Рекомендуется писать комментарии. Комментарий начинается словом "(" (открывающая скобка), и система пропускает следующий за ним текст до первого символа ")" (закрывающая скобка). Скомпилированные слова сразу же могут использоваться и в вычислениях и в определении других слов. Например, сумму четырех квадратов можно определить так: : S4(abed--> a*a+b*b+c*c+d*d ) S2 -ROTS2 + ; Можно отменить уже определенное слово ("забыть"его), но при этом забываются также и все слова, определенные позже него. Для этого используется слово "FORGET". Например, действие FORGET S2 "забудет" S2 и все определенные позже слова. Прежде, чем заводить новое слово, стоит убедиться, что его еще нет в словаре. Одному и тому же слову можно дать несколько определений с разным смыслом, но выполняться будет только последнее введенное. Однако прежнее определение не уничтожается. Если теперь выполнить слово "FORGET"c этим словом, то снова будет действовать прежнее определение. При отладке больших программ полезно иногда применять слово "FORGET", чтобы избежать переполнения словаря. Надо помнить, что при вводе нового слова с клавиатуры его исходный текст пропадает. В словаре запоминается только скомпилированная форма. Чтобы внести изменения в уже определенное слово для перекомпиляции, приходится перенабирать его определение полностью или использовать внешнюю память. При завершении сеанса работы с форт-системой, что обычно задается словом "BYE", из словаря исчезают все новые слова, определенные в этом сеансе. Способ сохранения наработанной версии форт-системы зависит от конкретной реализации. Приведем еще пару примеров. Слово "8M0D"эквивалентно тексту "8 MOD", но использует логические операции. Слово "LAST1" выделяет в двоичном разложении числа младшую единицу. : 8M0D 7 AND ; : LAST1 DUP DUP 1- XOR AND ; ФОРТверсия 26 октября 2005 г. 5 Принципы работы форт-системы 4.12Хранение программ и данных 4.13Методика программирования на Форте Язык Форт по своей идеологии очень минималистичен, так как изначально был разработан для программирования систем с очень ограниченными ресурсами - сейчас такие системы можно встретить исключительно в виде блоков управления различным оборудованием. Даже компьютеры внутри мобильников во многие разы больше по доступным ресурсам (скорости, разрядности процессора, объемам памяти, возможностям вывода графики и размерам носителей данных). Сам язык практически не защищает программиста от ошибок типа некорректной работы с данными, не поддерживает типизацию, ООП, структуры данных и т.п. Практически это ассемблер стековой машины, и программирование на нем очень близко к программированию на обычных ассемблерах - программист вынужден реализовывать все вручную, самостоятельно отслеживая состояние стека, корреткность адресов и указателей и т.п. Если вы хотите иметь язык, выполняющий серьезный контроль вашего кода, Форт для вас не подходит. С другой стороны у Форта есть одна особенность, которой многие языки не обладают, и которая является ключевой - на Форте вы не столько программируете, сколько расширяете язык через уже существующие в нем слова, определяя диалект под вашу задачу. Подробнее см [orange, thinking]. Из-за этой особенности Форт нельзя называть языком низкого уровня - хотя его ядро и низкоуровневое17, но его расширение приводит к созданию диалектов сверх-высокого уровня. Другими словами Форт - язык для конструирования проблемно-ориентированных языков, работающих на очень простой виртуальной машине. Реализация такой стековой ВМ для реального железа также проста, поэтому эта ВМ легко и быстро реализуется на любом языке или ассемлере, а программы на Форте переносятся либо вобще без изменений18 или с самыми минимальными правками, типа настройки программы под платформу и решаемые задачи. 5 Принципы работы форт-системы 5.1Создание слов-определителей 5.2Память Форта, словари и контекстные словари 5.2.1 Кодофайл Кодофайлом будем называть участок памяти, в котором располагаются набор слов Форт-системы и новые скомпилированные слова, написанные пользователем. Здесь же размещаются константы и переменные. Память занимается в направлении возрастания адресов, при этом свободная память находится в конце словаря. Иногда два соседних байта называют ячейкой. Тогда адресом ячейки считается адрес младшего байта (то есть байта с меньшим адресом). Мы будем называть ВЕРШИНОЙ СЛОВАРЯ первый свободный байт памяти. От программиста требуется особая осторожность при работе с памятью: изменения, записанные в ячейку с ошибочным адресом, могут нарушить функционирование Форт-системы так, что потребуется ее перезагрузка! Вот некоторые стандартные слова для работы с кодофайлом: HERE...--> ... addr 17но при этом все равно платформенно-независимое 18признак правильно написанной форт-программы версия 26 октября 2005 г.ФОРТ |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||