КМС-2

КМС-2
Справочное руководство программиста CMS-2Y
ПарадигмаИмператив
РазработаноRAND , Интерметрика
РазработчикКорпорация компьютерных наук
Впервые появился1968
Под влиянием
CS-1, Фортран , JOVIAL и PL/I [1]
Пример кода CMS-2

CMS-2язык программирования встроенных систем, используемый ВМС США . [2] Это была ранняя попытка разработать стандартизированный язык программирования высокого уровня, предназначенный для улучшения переносимости кода и возможности повторного использования. CMS-2 был разработан в первую очередь для тактических систем данных ВМС США ( NTDS ). [1]

CMS-2 была разработана корпорацией RAND в начале 1970-х годов и расшифровывается как «Compiler Monitor System». Название «CMS-2» сопровождается в литературе буквой, обозначающей тип целевой системы. Например, CMS-2M нацелена на 16-разрядные процессоры ВМС, такие как AN/AYK-14 . [2]

История

CMS-2 был разработан для FCPCPAC (Fleet Computer Programming Center - Pacific) в Сан-Диего, Калифорния. Он был реализован Computer Sciences Corporation в 1968 году при содействии Intermetrics . Язык продолжал развиваться, в конечном итоге поддерживая ряд компьютеров, включая компьютеры AN/UYK-7 и AN/UYK-43 , а также UYK-20 и UYK-44 [3] . [4]

Особенности языка

CMS-2 был разработан для поощрения модуляризации программ, что позволяет независимую компиляцию частей общей системы. Язык ориентирован на операторы. Исходный код имеет свободную форму и может быть организован для удобства программирования. Типы данных включают фиксированную точку, плавающую точку, логические, символьные и статусные. Разрешены прямые ссылки и манипуляции символьными и битовыми строками. Может быть включен символический машинный код, известный как прямой код. [1]

Структура программы

Пример системы времени компиляции CMS-2

Программа CMS-2 состоит из операторов. Операторы состоят из символов, разделенных разделителями. Категории символов включают операторы, идентификаторы и константы. Операторы — это языковые примитивы, назначаемые компилятором для определенных операций или определений в программе. Идентификаторы — это уникальные имена, назначаемые программистом блокам данных, элементам программы и меткам операторов. Константы — это известные значения, которые могут быть числовыми, строками Холлерита, значениями состояния или булевыми.

Операторы CMS-2 имеют свободную форму и заканчиваются знаком доллара. Метка оператора может быть размещена в начале оператора для справочных целей.

Исходная программа CMS-2 состоит из двух основных типов операторов. Декларативные операторы предоставляют базовую управляющую информацию компилятору и определяют структуру данных, связанных с конкретной программой. Динамические операторы заставляют компилятор генерировать исполняемые машинные инструкции (объектный код).

Декларативные операторы, определяющие данные для программы, группируются в блоки, называемые конструкциями данных. Конструкция данных состоит из точных определений для временных и постоянных областей хранения данных, областей ввода, областей вывода и специальных единиц данных. Динамические операторы, которые действуют на данные или выполняют вычисления, группируются в процедуры. Конструкция данных и процедуры далее группируются для формирования системных элементов программы CMS-2. Компилятор объединяет системные элементы в систему времени компиляции. Система времени компиляции может быть автономной или быть частью более крупной программы. [1]

Заявления о декларативных данных

Декларативные операторы данных предоставляют компилятору информацию об определениях элементов данных. Они определяют формат, структуру и порядок элементов данных в системе времени компиляции. Три основных типа данных — это переключатели, переменные и агрегаты. [1]

Переключатели

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

Переменные

Переменная — это отдельный фрагмент данных. Он может состоять из одного бита, нескольких битов или слов. Значение может быть назначено в определении переменной. Переменные могут содержать постоянное или изменяющееся значение. Типы данных включают целые числа, фиксированную точку, плавающую точку, строки символов Холлерита, статус или логические значения.

Агрегаты

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

Динамические заявления

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

Операторы операторов

Ниже приводится краткий обзор основных операторов CMS-2.

ОператорФункция
НАБОРВыполнить расчеты или присвоить значение
МЕНЯТЬОбменять содержимое двух блоков данных
ПЕРЕЙТИИзменить ход выполнения программы или вызвать оператор switch
ЕСЛИВыражает сравнение или логическое выражение для условного выполнения.
ОТЛИЧАТЬСЯУстановить программный цикл
НАХОДИТЬВыполняет поиск данных в таблице.

Специальные операторы

Специальные операторы облегчают ссылки на структуры данных и операции над ними. [1]

ОператорФункция
КУСОЧЕКСсылка на строку битов в элементе данных
ЧАРСсылается на строку символов
КОРАДСсылается на основной адрес
АБСПолучает абсолютное значение выражения
КОМПДополняет логическое выражение

Декларации структуры программы

Динамические операторы, описывающие операции обработки программы, группируются в блоки операторов, называемые процедурами. [1]

Начальный разделительКонечный разделительЦель
СИСТЕМАКОНЕЧНАЯ СИСТЕМАРазграничивает систему времени компиляции
SYS-DDКОНЕЦ-СИС-ДДРазграничивает дизайн системных данных в скомпилированной системе
SYS-PROCКОНЕЦ-СИСТЕМ-ПРОЦЕССРазграничивает системную процедуру в системе времени компиляции
LOC-DDКОНЕЦ-МЕСТО-ДДРазграничивает локальный дизайн данных в системной процедуре
ПРОЦЕДУРАКОНЕЦ ПРОЦЕССАРазграничивает процедуру в системной процедуре
EXEC-PROCКОНЕЦ ПРОЦЕССАРазграничивает процедуру состояния задачи в системной процедуре (только XCMS-2, вызывается только из процедуры состояния исполнителя)
ФУНКЦИЯКОНЕЦ-ФУНКЦИЯРазграничивает функцию в системной процедуре
SYS-PROC-RENКОНЕЦ-СИСТЕМ-ПРОЦЕССРазграничивает повторно используемую системную процедуру в системе времени компиляции (только XCMS-2)
АВТО-ДДКОНЕЦ-АВТО-ДДРазграничивает область динамических данных в процедуре реентерабельной системы, которая должна выделяться каждый раз, когда процедура реентерабельной системы инициируется для выполнения (только XCMS-2)
ГОЛОВАКОНЕЦ-ГОЛОВКАРазграничивает пакет заголовков в системе времени компиляции

Операторы ввода/вывода высокого уровня

Операторы ввода/вывода обеспечивают связь с аппаратными устройствами во время работы в среде не в реальном времени под управлением системы мониторинга. [1]

ОператорФункция
ФАЙЛОпределяет среду и другую информацию для ввода и вывода.
ОТКРЫТЬИнициализирует процедуры ввода-вывода
ЗАКРЫВАТЬДеактивирует файл и записывает метку конца файла
ВХОДНаправляет операцию ввода с внешнего устройства в область файлового буфера.
ВЫХОДНаправляет операцию вывода из области файлового буфера на внешнее устройство.
ФОРМАТОпределяет желаемое преобразование между внешними блоками данных и определениями внутренних данных.
КОДИРОВАНИЕУправляет преобразованием элементов данных в общую область, с преобразованием в соответствии с заданным форматом
ДЕКОДИРОВАТЬРуководит распаковкой общей области и передачей в блоки данных, как указано в декларации формата.
КОНЕЦФАЙЛАРазмещает отметку конца файла на соответствующих носителях записи.
POSСпециальный оператор для позиционирования файла на магнитной ленте
ДЛИНАСпециальный оператор для получения длины записи ввода/вывода

Система монитора компилятора 2 (CMS-2)

Compiler Monitor System 2 (CMS-2) была системой, работавшей на UNIVAC CP-642B ( AN/USQ-20 ). Системное программное обеспечение включало монитор , компилятор, библиотекаря, загрузчик CP-642, утилиту ленты и хартию потока. [1]

Монитор МС-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 и выводит блок-схему на высокоскоростной принтер.

Смотрите также

Ссылки

  1. ^ abcdefghij ВМС США (1978), Руководство по основам цифровой вычислительной техники, NAVEDTRA 10088-B , ВМС США
  2. ^ ab Neal Ziring (1998-10-19). "CMS-2". Ziring MicroWeb. Архивировано из оригинала 2014-11-23 . Получено 2014-07-08 .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  3. ^ Марк Уилсон — личный опыт работы с UYK-20 и UYK-44 на Aegis ORTS
  4. ^ Fleet Combat Direction Systems Support Activity (1986), CMS-2Y Programmers Reference Manual for the AN/UYK-7 and AN/UYK-43 Computers , ВМС США
  • Справочное руководство программиста CMS-2Y для AN UYK-7 и AN UYK-43 (октябрь 1986 г.)
  • Возможность эмуляции компьютера AN/UYK-7 на элементе обработки сигналов AADC [ постоянная мертвая ссылка ‍ ]
  • Словарь языков программирования для CMS-2
Взято с "https://en.wikipedia.org/w/index.php?title=CMS-2&oldid=1225995340"