CMS-2 – Wikipedia

before-content-x4

CMS-2 ist eine Programmiersprache für eingebettete Systeme, die von der United States Navy verwendet wird.[2] Es war ein früher Versuch, eine standardisierte Computerprogrammiersprache auf hoher Ebene zu entwickeln, um die Portabilität und Wiederverwendbarkeit von Code zu verbessern. CMS-2 wurde hauptsächlich für die taktischen Datensysteme (NTDS) der US Navy entwickelt.[1]

CMS-2 wurde Anfang der 1970er Jahre von der RAND Corporation entwickelt und steht für “Compiler Monitor System”. Dem Namen “CMS-2” folgt in der Literatur ein Buchstabe, der den Typ des Zielsystems bezeichnet. Beispielsweise zielt CMS-2M auf 16-Bit-Prozessoren der Navy ab, wie z. B. den AN / AYK-14.[2]

Geschichte[edit]

CMS-2 wurde für FCPCPAC (Fleet Computer Programming Center – Pazifik) in San Diego, CA, entwickelt. Es wurde 1968 von der Computer Sciences Corporation mit Unterstützung von Intermetrics implementiert. Die Sprache wurde weiterentwickelt und unterstützte schließlich eine Reihe von Computern, darunter AN / UYK-7 und AN / UYK-43 sowie UYK-20 und UYK-44 [3] Computers.[4]

Sprachmerkmale[edit]

CMS-2 wurde entwickelt, um die Modularisierung von Programmen zu fördern und die unabhängige Kompilierung von Teilen eines Gesamtsystems zu ermöglichen. Die Sprache ist aussageorientiert. Die Quelle ist frei formuliert und kann zur Vereinfachung der Programmierung angeordnet werden. Zu den Datentypen gehören Festkomma, Gleitkomma, Boolescher Wert, Zeichen und Status. Ein direkter Verweis auf und eine Manipulation von Zeichen- und Bitfolgen ist zulässig. Es kann symbolischer Maschinencode enthalten sein, der als direkter Code bekannt ist.[1]

Programmstruktur[edit]

Beispiel für ein CMS-2-Kompilierungszeitsystem

Ein CMS-2-Programm besteht aus Anweisungen. Anweisungen bestehen aus Symbolen, die durch Trennzeichen getrennt sind. Die Kategorien von Symbolen umfassen Operatoren, Bezeichner und Konstanten. Die Operatoren sind Sprachprimitive, die vom Compiler für bestimmte Operationen oder Definitionen in einem Programm zugewiesen werden. Bezeichner sind eindeutige Namen, die vom Programmierer Dateneinheiten, Programmelementen und Anweisungsbezeichnungen zugewiesen werden. Konstanten sind bekannte Werte, die numerisch, Hollerith-Zeichenfolgen, Statuswerte oder Boolesche Werte sein können.

CMS-2-Anweisungen sind frei formuliert und werden durch ein Dollarzeichen abgeschlossen. Ein Anweisungsetikett kann zu Referenzzwecken am Anfang einer Anweisung platziert werden.

Ein CMS-2-Quellprogramm besteht aus zwei grundlegenden Arten von Anweisungen. Deklarative Anweisungen stellen dem Compiler grundlegende Steuerinformationen zur Verfügung und definieren die Struktur der Daten, die einem bestimmten Programm zugeordnet sind. Dynamische Anweisungen bewirken, dass der Compiler ausführbare Maschinenanweisungen (Objektcode) generiert.

Deklarative Anweisungen, die die Daten für ein Programm definieren, werden in Einheiten gruppiert, die als Datenentwürfe bezeichnet werden. Datenentwürfe bestehen aus präzisen Definitionen für temporäre und permanente Datenspeicherbereiche, Eingabebereiche, Ausgabebereiche und spezielle Dateneinheiten. Die dynamischen Anweisungen, die auf Daten einwirken oder Berechnungen durchführen, sind in Prozeduren gruppiert. Datenentwürfe und -verfahren werden weiter gruppiert, um Systemelemente eines CMS-2-Programms zu bilden. Der Compiler kombiniert Systemelemente zu einem Kompilierungszeitsystem. Ein Kompilierungszeitsystem kann eigenständig sein oder Teil eines größeren Programms sein.[1]

Daten deklarative Aussagen[edit]

Datendeklarative Anweisungen liefern dem Compiler Informationen zu Datenelementdefinitionen. Sie definieren das Format, die Struktur und die Reihenfolge der Datenelemente in einem System zur Kompilierungszeit. Die drei Hauptarten von Daten sind Schalter, Variablen und Aggregate.[1]

Schalter[edit]

Schalter ermöglichen die Übertragung der Programmsteuerung an einen bestimmten Ort in einem System zur Kompilierungszeit. Sie enthalten eine Reihe von Kennungen oder Schaltpunkten, um Programmübertragungen und Verzweigungen zu erleichtern. Der Schalter repräsentiert eine Programmadresse einer Anweisungsbezeichnung oder eines Prozedurnamens.

Variablen[edit]

Eine Variable ist ein einzelnes Datenelement. Es kann aus einem Bit, mehreren Bits oder Wörtern bestehen. In der Variablendefinition kann ein Wert zugewiesen werden. Variablen können einen konstanten oder sich ändernden Wert enthalten. Zu den Datentypen gehören Ganzzahlen, Fixpunkt, Gleitkomma, Hollerith-Zeichenfolgen, Status oder Boolesche Werte.

Aggregate[edit]

Tabellen enthalten geordnete Sätze identisch strukturierter Informationen. Die gemeinsame Dateneinheit in einer Tabelle ist ein Element. Elemente können in Felder unterteilt werden, die kleinste Unterteilung einer Tabelle. Zulässige Datentypen in Feldern sind Ganzzahl, Festkomma, Gleitkomma, Hollerith-Zeichenfolge, Status oder Boolescher Wert. Ein Array ist eine Erweiterung des Tabellenkonzepts. Die grundlegende Struktureinheit eines Arrays ist ein Element. Array-Elemente enthalten vom Programmierer definierte Felder.

Dynamische Anweisungen[edit]

Dynamische Anweisungen geben Verarbeitungsvorgänge an und führen zur Generierung von ausführbarem Code durch den Compiler. Eine dynamische Anweisung besteht aus einem Operator, gefolgt von einer Liste von Operanden und zusätzlichen Operatoren. Ein Operand kann ein einzelner Name, eine Konstante, eine Datenelementreferenz oder ein Ausdruck sein.[1]

Anweisungsoperatoren[edit]

Die wichtigsten CMS-2-Betreiber sind nachstehend zusammengefasst.

Operator Funktion
EINSTELLEN Führen Sie Berechnungen durch oder weisen Sie einen Wert zu
TAUSCHEN Tauschen Sie den Inhalt von zwei Dateneinheiten aus
GEHE ZU Ändern Sie den Programmablauf oder rufen Sie einen Anweisungsschalter auf
WENN Drückt einen Vergleich oder einen booleschen Ausdruck für die bedingte Ausführung aus
VARIIEREN Richten Sie eine Programmschleife ein
FINDEN Durchsucht eine Tabelle nach Daten

Spezielle Betreiber[edit]

Spezielle Operatoren erleichtern Verweise auf Datenstrukturen und Operationen auf diesen.[1]

Operator Funktion
BISSCHEN Verweisen Sie auf eine Bitfolge in einem Datenelement
VERKOHLEN Verweist auf eine Zeichenfolge
CORAD Verweist auf eine Kernadresse
Abs Erhält den absoluten Wert eines Ausdrucks
COMP Ergänzt einen booleschen Ausdruck

Programmstrukturerklärungen[edit]

Die dynamischen Anweisungen, die die Verarbeitungsvorgänge eines Programms beschreiben, sind in Anweisungsblöcken zusammengefasst, die als Prozeduren bezeichnet werden.[1]

Begrenzer beginnen Trennzeichen beenden Zweck
SYSTEM END-SYSTEM Begrenzt ein Kompilierungszeitsystem
SYS-DD END-SYS-DD Begrenzt ein Systemdaten-Design in einem kompilierten System
SYS-PROC END-SYS-PROC Begrenzt eine Systemprozedur in einem System zur Kompilierungszeit
LOC-DD END-LOC-DD Begrenzt ein lokales Daten-Design in einer Systemprozedur
VERFAHREN END-PROC Begrenzt eine Prozedur in einer Systemprozedur
EXEC-PROC END-PROC Begrenzt eine Task-State-Prozedur in einer Systemprozedur (nur XCMS-2, nur von einer Executive-State-Prozedur aufgerufen)
FUNKTION ENDFUNKTION Begrenzt eine Funktion in einer Systemprozedur
SYS-PROC-REN END-SYS-PROC Begrenzt eine wiedereintretende Systemprozedur in einem System zur Kompilierungszeit (nur XCMS-2)
AUTO-DD END-AUTO-DD Begrenzt den dynamischen Datenbereich in einer Prozedur für ein wiedereintrittsfähiges System, die jedes Mal zugewiesen werden muss, wenn die Prozedur für ein wiedereintrittsfähiges System zur Ausführung initiiert wird (nur XCMS-2).
KOPF ENDKOPF Begrenzt ein Header-Paket in einem System zur Kompilierungszeit

Hochrangige Eingabe- / Ausgabeanweisungen[edit]

Eingabe- / Ausgabeanweisungen ermöglichen die Kommunikation mit Hardwaregeräten, während sie in einer Nicht-Echtzeitumgebung unter einem Monitorsystem ausgeführt werden.[1]

Operator Funktion
DATEI Definiert die Umgebung und andere Informationen für die Eingabe und Ausgabe
ÖFFNEN Initialisiert E / A-Routinen
SCHLIESSEN Deaktiviert eine Datei und schreibt und markiert das Dateiende
EINGANG Leitet eine Eingabeoperation von einem externen Gerät in einen Dateipufferbereich
AUSGABE Leitet eine Ausgabeoperation von einem Dateipufferbereich an ein externes Gerät
FORMAT Definiert die gewünschte Konvertierung zwischen externen Datenblöcken und internen Datendefinitionen
KODIEREN Leitet die Umwandlung von Datenelementen in einen gemeinsamen Bereich mit Konvertierung in ein bestimmtes Format
DEKODIEREN Weist das Auspacken eines gemeinsamen Bereichs und die Übertragung an Dateneinheiten an, wie in einer Formatdeklaration angegeben
ENDDATEI Platziert eine Dateiendemarkierung auf geeigneten Aufzeichnungsmedien
POS Spezieller Bediener zum Positionieren einer Magnetbanddatei
LÄNGE Spezieller Operator zum Erhalten einer Eingabe- / Ausgabedatensatzlänge

Compiler Monitor System 2 (CMS-2)[edit]

Das Compiler Monitor System 2 (CMS-2) war ein System, das auf dem UNIVAC CP-642B (AN / USQ-20) lief. Die Systemsoftware umfasste Monitor, Compiler, Bibliothekar, CP-642 Loader, Banddienstprogramm und Flow Charter.[1]

MS-2 Monitor[edit]

Ein Stapelverarbeitungsbetriebssystem, das die Ausführung von CMS-2-Komponenten und Benutzerjobs steuert, die auf dem CP-642-Computer ausgeführt werden. Es bietet Eingabe / Ausgabe, Softwarebibliotheksfunktionen und Debugging-Tools. Jobabrechnung wird ebenfalls bereitgestellt.

CMS-2-Compiler[edit]

Ein Compiler für die Sprachen CS-1 und CMS-2, der Objektcode für die Computer CP-642, L-304, AN / UYK-7, 1830A und 1218/1219 generiert. In den 1970er Jahren gab es verschiedene Versionen des CMS-2-Compilers, je nachdem, auf welchem ​​Computer der Code kompiliert wurde. Einige Quellcodes mussten neu geschrieben werden, um einige Funktionen zu umgehen. Und die verschiedenen Versionen von CMS-2 hatten Probleme mit den Debugging-Tools.

XCMS-2-Compiler[edit]

Ein erweiterter CMS-2-Compiler, der Sprachfunktionen für den AN / UYK-7-Computer hinzufügt. Es wird nur AN / UYK-7-Objektcode generiert.

CMS-2 Bibliothekar[edit]

Ein Dateiverwaltungssystem, das Speicher und Zugriff auf Quell- und Objektcode bietet.

CP-642 Objektcode-Lader[edit]

Zwei Objektcode-Lader zum Laden von absolutem oder verschiebbarem Objektcode.

Banddienstprogramm[edit]

Eine Reihe von Dienstprogrammen zum Verwalten von Daten auf Magnetband.

CMS-2 Flowcharter[edit]

Die Flowcharter-Software verarbeitet Flowcharter-Anweisungen im CMS-2-Quellcode und gibt ein Flussdiagramm an einen Hochgeschwindigkeitsdrucker aus.

Siehe auch[edit]

Verweise[edit]

  1. ^ ein b c d e f G h ich j US Navy (1978), Schulungshandbuch für die Grundlagen des Digitalcomputers, NAVEDTRA 10088-B, US Navy
  2. ^ ein b Neal Ziring (1998-10-19). “CMS-2”. Ziring MicroWeb. Archiviert von das Original am 19.10.1998. Abgerufen 08.07.2014.
  3. ^ Mark Wilson – persönliche Erfahrung in der Arbeit mit UYK-20 und UYK-44 bei Aegis ORTS
  4. ^ Unterstützungsaktivität für Flottenkampfrichtungssysteme (1986), Referenzhandbuch für CMS-2Y-Programmierer für die Computer AN / UYK-7 und AN / UYK-43, US Navy

Externe Links[edit]

after-content-x4