CMS-2 - CMS-2

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

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

CMS-2 была разработана RAND Corporation в начале 1970-х и расшифровывается как «Система мониторинга компилятора». За названием «CMS-2» в литературе следует буква, обозначающая тип целевой системы. Например, CMS-2M нацелен на 16-разрядные процессоры ВМФ, такие как АН / АЙК-14.[2]

История

CMS-2 была разработана для FCPCPAC (Fleet Computer Programming Center - Pacific) в Сан-Диего, Калифорния. Это было реализовано Корпорация компьютерных наук в 1968 году при содействии дизайна Интерметрики. Язык продолжал развиваться, в конечном итоге поддерживая ряд компьютеров, включая АН / УЙК-7 и АН / УЙК-43 и УЙК-20 и УЙК-44 [3] компьютеры.[4]

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

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

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

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

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

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

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

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

Декларативные заявления данных

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

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

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

Переменные

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

Агрегаты

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

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

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

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

Основные операторы CMS-2 приведены ниже.

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

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

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

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

Объявления структуры программы

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

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

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

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

ОператорФункция
ФАЙЛОпределяет среду и другую информацию для ввода и вывода
ОТКРЫТОИнициализирует процедуры ввода-вывода
ЗАКРЫТЬДеактивирует файл и записывает и отмечает конец файла
ВХОДНаправляет операцию ввода с внешнего устройства в область файлового буфера
ВЫХОДНаправляет операцию вывода из области файлового буфера на внешнее устройство
ФОРМАТОпределяет желаемое преобразование между внешними блоками данных и определениями внутренних данных
КОДИРОВАТЬУправляет преобразованием элементов данных в общую область, с преобразованием в соответствии с заданным форматом
ДЕКОДИРОВАТЬНаправляет распаковку общей области и передачу в блоки данных, как указано в объявлении формата
ENDFILEПомечает конец файла на соответствующих носителях записи.
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, АН / УЙК-7, 1830А и 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. ^ а б c d е ж грамм час я j ВМС США (1978), Учебное пособие по основам работы с цифровым компьютером, NAVEDTRA 10088-B, ВМС США
  2. ^ а б Нил Зиринг (1998-10-19). «ЦМС-2». Ziring MicroWeb. Архивировано из оригинал на 1998-10-19. Получено 2014-07-08.
  3. ^ Марк Уилсон - личный опыт работы с UYK-20 и UYK-44 на Aegis ORTS
  4. ^ Деятельность по поддержке систем боевого управления флотом (1986), Справочное руководство программиста CMS-2Y для компьютеров AN / UYK-7 и AN / UYK-43, ВМС США

внешняя ссылка