Открыть сервис

Ассемблер FAP

Ассемблер FAP (от англ. Fortran Assembly Program) — это язык программирования низкого уровня и одноимённая трансляторная программа, разработанные в начале 1960-х годов корпорацией IBM для мейнфреймов серии IBM 709, IBM 7090 и IBM 7094. FAP представлял собой макроассемблер, предназначенный для написания эффективного машинного кода, оптимизированного для архитектуры этих компьютеров, и использовался преимущественно для системного программирования, разработки компиляторов (в частности, самого компилятора Fortran) и драйверов периферийных устройств. В отличие от более поздних ассемблеров, FAP сочетал в себе возможности символической адресации и макроподстановки, что позволяло программистам работать на уровне, близком к машинному, но с элементами абстракции.

История

Разработка FAP велась в рамках проекта по созданию программного обеспечения для научных и инженерных вычислений на мейнфреймах IBM 7090. Первая версия ассемблера была выпущена в 1961 году для операционной системы IBSYS (предшественницы OS/360). Основной целью было обеспечение обратной совместимости с программами, написанными для более ранних машин IBM 704, а также предоставление инструмента для оптимизации критических участков кода, которые не могли быть эффективно скомпилированы с помощью Fortran.

В 1962 году, с выходом модели IBM 7094, была выпущена модифицированная версия FAP, поддерживающая расширенный набор инструкций (включая операции с плавающей запятой двойной точности и дополнительные команды управления памятью). Ассемблер оставался основным средством низкоуровневого программирования для этой платформы до середины 1960-х годов, пока не был вытеснен более универсальным ассемблером MAP (Macro Assembly Program) для IBM System/360. Однако FAP продолжал использоваться в специализированных проектах до начала 1970-х годов, в частности, в университетских лабораториях и оборонных учреждениях США.

Архитектура и синтаксис

FAP работал с 36-битным машинным словом, характерным для архитектуры IBM 7090. Программа на FAP состояла из последовательности строк, каждая из которых могла содержать метку, мнемонику команды, операнды и комментарий. Синтаксис был строго позиционным: поля разделялись пробелами, а метка начиналась с первой позиции строки.

Основные элементы

Пример кода

Пример программы на FAP, вычисляющей сумму двух чисел и сохраняющей результат:

`` START CLA A ; Загрузить значение A в аккумулятор ADD B ; Сложить с B STO C ; Сохранить результат в C TRA ENDPRG ; Переход к завершению A CON 10 ; Константа A = 10 B CON 20 ; Константа B = 20 C BSS 1 ; Резервирование 1 слова для C ENDPRG END START ; Конец программы, точка входа START ``

Макросредства

Одной из ключевых особенностей FAP была поддержка макросов. Макросы позволяли программисту определять последовательности команд, которые могли быть многократно использованы с различными параметрами. Это существенно повышало производительность труда и уменьшало количество ошибок, хотя и требовало большего времени на трансляцию.

`` MACRO ADDCHK &X, &Y, &RES CLA &X ADD &Y STO &RES TZE *+2 ; Если результат 0, пропустить проверку TRA OVERFLOW ; Иначе — обработка переполнения MEND ``

Применение

Системное программирование

FAP активно использовался для написания ядра операционной системы IBSYS, а также драйверов для магнитных лент, барабанных и дисковых накопителей. Благодаря возможности прямого управления регистрами и прерываниями, ассемблер позволял реализовывать критически важные по времени функции, такие как планирование задач и обработка ввода-вывода.

Компиляторы Fortran

Значительная часть компилятора Fortran II для IBM 7090 была написана на FAP. Это было необходимо для оптимизации генерации кода, особенно при работе с циклами и арифметикой с плавающей запятой. Внутренние процедуры компилятора, отвечающие за синтаксический анализ и генерацию объектного кода, часто реализовывались на ассемблере для достижения максимальной производительности.

Научные расчёты

Хотя основным языком для научных вычислений был Fortran, FAP применялся для написания библиотек подпрограмм, требующих высокой скорости, — например, для быстрого преобразования Фурье (БПФ) или решения систем линейных уравнений. Такие подпрограммы могли быть вызваны из Fortran-программ через механизм внешних ссылок.

Ограничения

Влияние на последующие разработки

FAP стал прототипом для многих ассемблеров, созданных в 1960-х годах. Его концепция макросов была заимствована и развита в ассемблере MAP для IBM System/360, а также в ассемблерах для машин CDC 6600 и Burroughs B5000. Методы оптимизации кода, разработанные при работе с FAP, легли в основу ранних компиляторов оптимизирующих языков, таких как ALGOL 60 и PL/I.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →