Введение
CMS 2 — это язык программирования встроенных систем, используемый Военно-морским флотом США. Он представлял собой раннюю попытку разработки стандартизированного языка программирования высокого уровня, призванного повысить переносимость и повторное использование кода. CMS 2 был разработан главным образом для тактических систем обработки данных ВМС США (NTDS) и компьютеров.
Языковые особенности
CMS 2 была разработана для стимулирования модульности программ, обеспечивая независимую компиляцию частей общей системы. Язык ориентирован на операторы. Исходный код имеет свободный формат и может быть структурирован для удобства программирования. Типы данных включают числа с фиксированной точкой, числа с плавающей точкой, логические значения, символы и состояния. Допускается непосредственная работа с символьными и битовыми строками. В код можно включать символьный машинный код, известный как прямой код.
Структура программы
Программа CMS 2 состоит из операторов. Операторы состоят из символов, разделенных разделителями. Категории символов включают операторы, идентификаторы и константы. Операторы – это языковые примитивы, назначаемые компилятором для выполнения определенных операций или определений в программе. Идентификаторы – это уникальные имена, присваиваемые программистом единицам данных, элементам программы и меткам операторов. Константы – это известные значения, которые могут быть числовыми, строками Холлерита, значениями состояния или логическими. Операторы CMS 2 имеют свободный формат и завершаются знаком доллара. В начале оператора может быть помещена метка для целей ссылки на него. Исходная программа CMS 2 состоит из двух основных типов операторов. Декларативные операторы предоставляют компилятору основную управляющую информацию и определяют структуру данных, связанных с конкретной программой. Динамические операторы заставляют компилятор генерировать исполняемые машинные инструкции (объектный код). Декларативные операторы, определяющие данные для программы, группируются в единицы, называемые описаниями данных. Описания данных состоят из точных определений областей хранения временных и постоянных данных, областей ввода, областей вывода и специальных единиц данных. Динамические операторы, которые обрабатывают данные или выполняют вычисления, группируются в процедуры. Описания данных и процедуры далее группируются для формирования системных элементов программы CMS 2. Компилятор объединяет системные элементы в систему времени компиляции. Система времени компиляции может существовать автономно или быть частью более крупной программы.
Декларативные заявления о данных
Декларативные описания данных предоставляют компилятору информацию об определениях элементов данных. Они определяют формат, структуру и порядок элементов данных в системе во время компиляции. Три основных вида данных – переключатели, переменные и агрегаты.
Выключатели
Переключатели обеспечивают передачу управления программой в конкретное место в системе времени компиляции. Они содержат набор идентификаторов или точек переключения для упрощения передачи управления и ветвлений в программе. Переключатель представляет собой адрес программы, соответствующий метке оператора или имени процедуры.
Переменные
Переменная – это единичный элемент данных. Она может состоять из одного бита, нескольких битов или слов. Значение может быть присвоено при определении переменной. Переменные могут хранить постоянное или изменяющееся значение. Типы данных включают целые числа, числа с фиксированной точкой, числа с плавающей точкой, строковые данные Холлерита, состояния или логические значения.
Агрегаты
Таблицы содержат упорядоченные наборы идентично структурированной информации. Основной единицей данных в таблице является элемент. Элементы могут быть разделены на поля, являющиеся наименьшей единицей деления таблицы. Допустимые типы данных, содержащиеся в полях, включают целое число, число с фиксированной точкой, число с плавающей точкой, строку символов Холлерита, статус или логический тип. Массив является расширением концепции таблицы. Основной структурной единицей массива является элемент. Элементы массива содержат поля, определенные программистом.
Динамические высказывания
Динамические выражения задают операции обработки и приводят к генерации исполняемого кода компилятором. Динамическое выражение состоит из оператора, за которым следует список операндов и дополнительных операторов. Операнд может быть одиночным именем, константой, ссылкой на элемент данных или выражением.
Система мониторинга компилятора 2 (CMS-2)
Система мониторинга компилятора 2 (CMS 2) была системой, работавшей на UNIVAC CP 642B (AN/USQ 20). Программное обеспечение системы включало монитор, компилятор, библиотечного работника, загрузчик CP 642, утилиту для работы с магнитной лентой и схему потока данных.
Монитор MS-2
Операционная система пакетной обработки, управляющая выполнением компонентов CMS 2 и пользовательских заданий, работающих на компьютере CP 642. Она обеспечивает ввод/вывод, программные библиотеки и средства отладки. Также предусмотрен учёт выполненных заданий.
Компилятор CMS-2
Компилятор для языков CS 1 и CMS 2, генерирующий объектный код для компьютеров CP 642, L 304, AN/UYK 7, 1830A и 1218/1219. В 1970-х годах существовали различные версии компилятора CMS 2, зависящие от компьютера, на котором производилась компиляция кода. Некоторые участки исходного кода приходилось переписывать для обхода определенных функций. Кроме того, разные версии CMS 2 имели проблемы с инструментами отладки.
Компилятор XCMS-2
Расширенный компилятор CMS 2, добавляющий языковые средства для компьютера AN/UYK 7. Он генерирует исключительно объектный код для AN/UYK 7.
Библиотекарь CMS-2
Система управления файлами, обеспечивающая хранение и доступ к исходному и объектному коду.
CP-642 Загрузчики кода объектов
Два загрузчика объектного кода для загрузки абсолютного или релоцируемого объектного кода.
Утилита ленты
Набор утилит для управления данными на магнитной ленте.
Схема CMS-2
Программное обеспечение для создания блок-схем обрабатывает операторы блок-схем в исходном коде CMS 2 и выводит блок-схему на высокоскоростной принтер.