DE2249852A1 - Computersystem - Google Patents
ComputersystemInfo
- Publication number
- DE2249852A1 DE2249852A1 DE19722249852 DE2249852A DE2249852A1 DE 2249852 A1 DE2249852 A1 DE 2249852A1 DE 19722249852 DE19722249852 DE 19722249852 DE 2249852 A DE2249852 A DE 2249852A DE 2249852 A1 DE2249852 A1 DE 2249852A1
- Authority
- DE
- Germany
- Prior art keywords
- language
- original
- information
- program
- compiler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
Die Erfindung betrifft ein Computersystem»
Hierbei sind die Datenverarbeitungssysteme und - Programme, insbesondere die Compilerfunktion,von Interesse,
welch letztere ein wesentlicher Bestandteil von Datenverarbeitungssystemen ist, wobei ein Ursprungsprogramm von einer
höheren Ursprungssprache in den endgültigen Objektmaschinencode
"compiled" bzw. umgesetzt wird, der für die Ausführung in einem Computer bestimmter Type geeignet ist. Das Ziel dieser
Erfindung ist es, optimierte Wege zur Ausführung dieser Compilerfunktion für eine große Vielzahl verschiedener Arten
von Ursprungssprachen zu schaffen, derart, daß solche Programme für eine große Vielzahl verschiedener Typen von Computern
verwendbar sind.
Auf dem Gebiet der verschiedenen Computerarten sind es die Hardware-Moduls, welche für den Bau eines Computers verwendet
werden. Diese Hardware ist von keinem besonderen Nutzen, solange sie nicht in entsprechender Weise mit Instruktionen
versehen wird, die angeben, wie sie zu arbeiten hat. Es ist der Programmierer, der eine bestimmte Sprache zur Entwicklung
eines Iristruktionssatzes verwendet, dem sogenannten
3Ö9816/dÖ6§
10.10.72
Programm, welches es dann dem Benutzer erlaubt, rohe Daten in ihrer richtigen Form zu verwenden, so daß die "Hardware"
durch die "Software" (Programm) angewiesen werden kann, wie die Daten zu handhaben und die gewünschten Resultate zu erzielen
sind.
Während der Entwurf und die Anfertigung von für einen Computer geeigneten Hardware als "Ingenieurwissenschaft" bezeichnet
wird, ist es genauso eine unumstößliche Tatsache, daß die Erstellung von Instruktions- und Symbolserien (Programmgebung)ebenfalls
eine Art Ingenieurwissenschaft ist, obwohl diese Art in Form von gedruckten Symbolen anstatt von
Hardware zum Ausdruck kommt.
Es ist noch nicht allzuviele Jahre her, daß die meisten Programme von Instruktionen in einer Sprache geschrieben wurden,
die dem Betriebscode von Maschinen (Objektmaschinencode)
sehr ähnlich ist. Seit damals sind jedoch große, sogenannte Compiler entwickelt und gebaut worden, die auf einem höheren
Niveau stehen und mit sogenannten problemorientierten, höheren Eingangssprachen arbeiten.
Ein Programm ist eine Definition, die von Computersystemen zwecks Erzielung eines bestimmten Ergebnisses angewandt
wird. Das Programm wird dadurch aufgestellt, daß an sich einfachere Definitionen in bestimmter Weise zusammengestellt werden.
Beim Objektmaschinencode definiert jede Instruktion einen
neuen Wert für den Inhalt von Registern. Instruktionen werden zu Reihen zusammengestellt, was bedeutet, daß die Definitionen
so geordnet werden, daß sie in der richtigen Reihenfolge nacheinander zur Anwendung kommen.
Bei den höheren Programmiersprachen gibt es Beispiele von anderen Wegen der Zusammenfassung von Definitionen.
"Deklarationen", welche außerhalb der Instruktionsreihenfolge stehen, definieren die Wege, wie der Bezug zu Operanden, wel-
10.3.0.72
309316/0869
ehe in den Instruktionen enthalten sind, zu interpretieren
ist. "Unterprogramme" ermöglichen nicht nur die'Bestimmung
von Operanden, sondern auch Operationen, welche in anderen Teilen des Programms verwendet werden können. "Ausdrücke" ergeben
eine innigere Kombination von Operationen als das einfache Zusammenreihen von Instruktionen, wodurch Zwischenoperanden
verwendet werden können, ohne daß diese explizit benannt werden müssen, und außerdem implizit die Anwendefolge
der Operatoren beibehalten wird.
Demzufolge ist ein "Programm", welches in einer Sprache geschrieben ist, das die Anwendung aller dieser Techniken gestattet,
ein sorgfältig ausgearbeitetes Netzwerk von aufeinander bezogenen Definitionen, nämlich ein sogenanntes Ursprungsprogramm
ο Der Compiler bzw. die -Compiler funkt ion bewirkt,
daß das Ursprungsprogramm in ein bestimmtes anderes Programm in einer bestimmten anderen Sprache umgewandelt wird,
welch letztere tatsächlich auch von einem einfacheren Niveau aus zu verstehen ist und von dem betreffenden Computer (Host
computer) verarbeitet werden kann.
Bei dem gegenwärtigen Stand der verschiedenen Computerarten gibt es eine Vielzahl von Ursprungssprachen, die von
Programmierern zur Darstellung von Algorithmen in Befehlen und Folgen verwendet werden, wie sie für die Handhabung von Daten
durch Computereinrichtungen erforderlich sind. Ferner gibt es
für die Verwendung spezieller Computersysteme eine Vielzahl
von besonderen Anwendungsarten, wie sie beispielsweise durch die verschiedensten Firmen verwendet werden, zu welchen unter·.
anderem IBM Burroughs, Honeywell, General Electric, NCR und andere gehören, wobei nicht zu übersehen ist ,· daß bei j edem
der verschiedenen Conputersysteme dieser Firmen das Ursprungsprogramm
in einem eigenen Objektmaschinencode vorliegen muß, damit es mit der betreffenden Computeranlage gefahren werden
kann.
10.10.72
309816/08 6 9
Für jede höhere Ursprungssprache und Objektmaschinenkombination
muß ein besonderes Programm bzw. Compilerprogramm
entwickelt werden, welches es ermöglicht, das in der Ursprungssprache geschriebene Programm in einer ganz bestimmten Computeranlage
einzusetzen.
Wenn ein Ursprungsprogramm in einer höheren Ursprungssprache aufgestellt wurde, z.B. in Cobol oder Fortran, dann
muß dieses höhersprachige Programm in die einfache Maschinensprache bzw. in den Objektmaschinencode umgewandelt werden,
der für die Verwendung mit dem gegebenen Computersystem geeignet
ist. Es muß also für jede bestimmte Konfiguration ein
spezielles Compilerprogramm entwickelt, als Programm geschrieben, getestet und von Fehlern befreit werden. Wenn beispielsweise
ein Ursprungsprogramm in einer höheren Sprache, z.B. Cobol, entwickelt wurde und mit einem IBM/Öomputer verwendet
werden soll, dann muß das in der höheren Cobolsprache vorhandene Programm einem besonderen Compilerprogramm unterzogen
werden, um es in einen Objektmaschinencode umzuwandeln, wie
er genau zum Betrieb des IBM 360 Computers erforderlich ist.
Das spezielle Compilerprogramm ist jedoch nur für diese
eine, spezielle Situation von Nutzen und kann nicht für andere Computer, beispielsweise solche von Burroughs oder NCR verwendet
werden, da hierzu wieder ein anderes Compilerprogramm
erforderlich ist, um das in der höheren Ursprungssprache geschriebene Programm für andere Computerarten anwendbar zu machen.
Jedes einzelne dieser "speziellen Compilerprogramme" sind
"große Pa^kete" und enthalten tausende und manchmal mehrere hunderttausend Instruktionen, die von Programmierern und Systemanalytikern
entwickelt werden müssen. Danach müssen sie geprüft,
von Fehlern befreit und zuverlässig gemacht werden, was hunderte von "Mannjahren" in Anspruch nehmen kann. Es ist eindeutig
nicht optimal, wenn jedes dieser speziellen Compilerprogramme jedesmal neu erstellt und geprüft werden muß, wenn
10.10.72
30981 6/0869
eine andere Ursprungssprache für ein Programm aufgestellt wird, wobei jedesmal eine andere Art der Erstellung von Computersystemen
Anwendung findet.'
Nimmt man beispielsweise an, daß es erwünscht ist, drei verschiedene Arten von Computersystem zu verwenden, zusammen
mit Ursprungsprogrammen, welche in drei verschiedenen höheren Ursprungssprachen aufgestellt wurden, dann ist ersichtlich,
daß mindestens neun individuelle Compiler entworfen, gebaut, programmiert und geprüft werden müssen, um die erwünschte Fähigkeit
zu erzielen. Damit kommt man aber zu einem solch ungeheuer umfangreichen Projekt, daß es höchst unpraktikabel
wird. Nimmt man beispielsweise einen Durchschnittsarbeitsfaktor für die Fähigkeit eines einzelnen Programmierers, der ein
Jahr arbeitet und in der Lage ist, fünfhundert Instruktionen pro Jahr zu entwickeln, dann sieht man überraschenderweise,
daß bereits ein einziges Compilerprogramm vierhundert Mannjahre Programmierarbeit erfordern kann, die zweihunderttausend
Instruktionen zu compilieren bzw. umzusetzen, die für ein solches spezielles Compilerprogramm erforderlich sein können.
Es ist ersichtlich, daß bei jeder der gegenwärtigen Computeranlagen
praktisch bis zu 50% der Kosten und der nutzbaren Computerzeit zur Ausführung der Compilerfunktion erforderlich
ist, d. h. also dazu, das von dem betreffenden Computer zu verarbeitende Ursprungsprogramm in einem maschinenlesbaren
Objektcode zu "compilen" bzw. zu übersetzen.
In den 60ziger Jahren schien es, als ob sich die höheren Sprachen, wie beispielsweise Fortran und Cobol, nicht sehr
stark entwickeln würden, teilweise infolge der Kompliziertheit und des durch Compiler bedingten Risikos. 1965 erschien PL/1.
Dies ist im wesentlichen eine Kombination von Fortran und mit der zusätzlichen angenehmen Eigenschaft der Kommunukation mit
dem Betriebssystem. Allgemein wurde für jede Sprache und für jede Generation von neuen Computern ein neuer Compiler geschrie
ben.
io.io.72 309816/0869
Ein Versuch zur Verallgemeinerung des Compilers und dadurch
auch zur Verringerung der Anzahl von Compilern, welche für jeden neuen Computer geschrieben werden muß, ist unter
dem Namen Syntaxcompiling bekannt geworden. Diese Technik besteht in der Bereitstellung von Syntax- und Semantictabellen
von der Ursprungssprache als Eingang entsprechend der Anwendung des Programms auf dem Compiler. Die Compilung nach dieser
Methode ist naturbedingt langsamer als die häufiger verwendete Tabellen- getriebene Compilertechnik.
Die grundsätzliche Schwäche liegt darin, daß der Compiler aus dem Wissen über eine bestimmte Ursprungssprache keinen Vorteil
gewinnen kann, um die Prüf- und Forschungsmenge zu reduzieren, die bei der Analyse und dem Erkennungsteil (dem Sprachübersetzerteil)
des Compilers erforderlich ist.
Bei einem anderen Versuch auf dem Gebiet des Entwurfs von Compilern hat man das Konzept der Automatisierung des Compilerschreibens
durch Verwendung eines Compiler-Compilers entwickelt. Bei Verwendung dieses Konzepts wird ein Compiler als
Eingangssignal entsprechend der Beschreibung einer neuen Targetmaschine verwendet. Dieses Eingangssignal wird von einem
Compiler-Compiler unter Bildung eines neuen Compilers verarbeitet, um die Ursprungssprache für die neue Targetmaschine umzusetzen
(compilen).
Eine naturbedingte Schwäche dieses Konzepts ist es, daß jede Transformation in einen neuen Compiler einen Verlust an
Wirkungsgrad zur Folge hat und ein aufeinanderfolgend schlechter werdender Compiler unumgänglich ist.
Aufgrund der Ergebnisse dieser Entwicklungen und Testversuche von verschiedenen Annäherungen zur Sprachverarbeitung
erscheint es unmöglich zu sein, die gesamte Ursprungssprache in einem einzigen Übersetzer übersetzen zu können. Das andere
Extrem bezüglich der Akzeptierung des oben gesagten, daß für
10.10.72
30981 6/0869
jede Sprache für jeden Computer getrennte, in ihrer Art einzigartige
Compiler erforderlich sind, und eine Automation des Aufschreibprozesses einzigartiger Compiler zu versuchen,
scheint in ähnlicher Weise unrealistisch.
Die "Groß-Pa^kete" - Compilerprogramme sind weder zuverlässig
noch vom wissenschaftlichen Standpunkt her gerechtfertigt,
da sie nur in einer bestimmten Situation von Nutzen und so unfangreich, unhandlich und zeitraubend mit Bezug auf
Checkouts und Fehlerprüfung sind, daß nur geringe bzw. keine Anstrengungen unternommen wurden, Compilerprogramme bereitzustellen,
welche eine verallgemeinerte Übersetzung einer Ursprungsprogrammsprache umfassen, um dadurch eine Anpassuig an
jedes spezielle oder eine Vielzahl von Computersystemen zu
erzielen.
Ferner beruht zu einem großen Teil die allgemeine Einstellung zur Compiling (um ein in einer Ursprungssprache geschriebenes,
Programm für ein gegebenes Computersystem verwendbar zu machen) auf der Theorie, daß eine Übersetzung von dem
Ursprungssprachenprogramm derart gemacht werden muß, daß man ein Anweisungssymbol von der Ursprungssprache in einen verwendbaren
Maschinenobjektcode umwandelt, um das betreffende Computersystem zu betreiben.
Es wurde erst kürzlich entdeckt, daß das hier vorgeschlagene Konzept der Klassifizierung von Ursprungssprachen-Programminformationen
in sprachabhängige Informationsanweisungen des Problems und in sprachunabhängige Informationen (Problemübersetzungsalgorithmus)
ein vollständig anderes Compilerfunktionskonzept ermöglicht, was eine beträchtliche Optinierung
hinsichtlich der Zeit, des Aufwandes und der Wirtschaftlichkeit in der Anwendung einer verallgemeinerten Compilerfunktion
zur Folge haben kann.
Durch die Erfindung soll die Aufgabe gelöst werden, bei einem Computer innerhalb eines Systems einen universellen Com-
10.10.72
3 0 9 8 1 6/0869
piler derart zu verwenden, daß die Compilerfunktion über einen
großen Bereich von Ursprungsprogrammsprachen und einen großen Bereich von Computertypen optimiert wird.
Diese Aufgabe wird gemäß der Erfindung dadurch gelöst, daß bei einem Computersystem ein universeller Compiler verwendet
wird, welcher sowohl von den Ursprungssprachen als auch von Maschinencod's spezieller Maschinen unabhängig ist.
Ferner soll durch die Erfindung ein optimiertes Software-Firmware-System
geschaffen werden, bei welchem ein Ursprungsprogramm, das in irgendeiner beliebigen aus der Vielzahl der
möglichen höheren Programmiersprachen geschrieben ist, in einen speziellen Objektmaschinencode compiled bzw. übersetzt werden
kann, der für eine Vielzahl verschiedenartiger Computersysterne
verwendbar ist.
Weiter soll durch die Erfindung ein Zwischensprachencompiler geschaffen werden, welcher sowohl von den höheren Ursprungssprachen
und als auch von den niedrigeren speziellen Maschinencod's praktisch unabhängig ist.
Auch wird durch die Erfindung ein universeller Compiler geschaffen, welcher es entbehrlich macht, einen vollständig
neu integrierten built-for-the-purpose-compiler jedesmal entwerfen
und auf Fehler untersuchen zu müssen, wenn ein neues Computersystem oder neues Computermodell entwickelt wird. Es
ist ersichtlich, daß der universelle Compiler gegebenenfalls in die Implementationssprache des neuen Computers (eine weit
geringere Aufgabe) übersetzt werden muß.
Desweiteren soll der universelle Compiler gemäß der Erfindung von der Ursprungssprache unabhängig sein, in welcher
das Ursprungsprogramm aufgestellt wurde.
Die Erfindung beinhaltet auch ein optimal verallgemeinertes Compilersystem, welches aus "kleinen Paketen" aufgebaut
10.10.72
30 9 8 16/0 869
ist, um eine Vielseitigkeit und leichte Anpaßungsmoglichkeit
an Programme in einer großen Vielzahl von Ursprungssprachen und eine leichte Anpaßung an beliebige verschiedenartige Computersysteme
zu erzielen.
Gemäß der Erfindung erhält man ein optimales System, durch welches die Compilerfunktion ganz allgemein für eine
Vielzahl von Ursprungssprachen und eine Vielzahl von speziellen ComputersySternen auf einer vereinfachten wirksamen Basis
angewendet werden kann.
Ferner soll die Programmierarbeit und Personenbelastung vereinfacht und reduziert werden, die bei der Erstellung der
Compilerfunktion für die Verwendung eines bestimmten Computersystems
erforderlich ist.
Im Rahmen der Erfindung ergibt sich die Erstellung eines ersten Zwischenprogramms, welches eine Stufe der Unabhängigkeit
einer Ursprungssprache darstellt, und die Entwicklung einer zweiten Zwischensprache, welche eine Stufe der Unabhängigkeit
von einem beliebigen vorgegebenen Objektmaschinencode ergibt,
sowie die Erstellung einer Metasprache, mit der Ursprungssprachen analysiert und beschrieben werden können»
Ein wesentliches Merkmal der Erfindung ist auch die Reduzierung des sehr großen Zeitaufwandes, wie er normalerweise
bei der Verwendung eines Computers zur Erstellung und Ausführung der Compilerfunktion erforderlich ist.
Das Wesen der Erfindung läßt sich wie folgt darstellen: die Erfindung bezieht sich auf einen Computer und einen universellen
Compiler, die in einem System untergebracht sind, dessen Zweck und Funktion die Bereitstellung eines Software-Firmware-Systems
ist, in welchem ein Ursprungsprogramm, das in irgendeiner aus der Vielzahl der (höheren) Programmiersprachen
geschrieben ist, in irgendeinen aus der Vielzahl der Objektmaschinencod's
compiled und übersetzt wird, der für ein
10.10.72
3098 16/0889
22498S2
bestimmtes Computersystem geeignet ist.
Das System enthält: (a) übersetzen des Ursprungsprogramms von seiner höheren Sprache in eine sprachunabhängige erste Zwischensprache
(IL-I); (b) trennen der ausführbaren oder "Aktions"- Anweisungen von den nichtausführbaren Informationen
(Substantive oder identifizierende Substantivanweisungen);
( c) Compilen dieser Anweisungen und Informationen(Verwendung
eines Zwischensprachencompilers) in eine zweite Zwischensprache
(IL-2); (d) übersetzen der zweiten Zwischensprache (IL-2)
in einen bestimmten Objektmaschinencode, der für eine bestimmte
Art von Computersystemen geeignet ist.
Das in einer höheren Sprache, z.B.Cobol, vorliegende Ursprungsprogramm
wird einem "Kleinprogramm"-Paket zugeführt,
das als Ursprungssprachenübersetzer (SLT) bezeichnet wird, der das z.B. in Cobol geschriebene Ursprungsprogramm in eine
erste Zwischensprache modifiziert bzw. übersetzt, die nunmehr von der Cobol-Ursprungssprache unabhängig ist. Wenn das Ursprungsprogramm
in der unter der Bezeichnung Fortran bekannten Ursprungssprache vorliegt, wird es einem anderen spezialisierten
"Kleinprogramm-Paket"-Ursprungssprachenübersetzer zugeführt,
welcher es in die erste Zwischensprache umwandelt, usw. Auf dieser Stufe wird eine auch als Universalcompiler bezeichenbare
Funktion dazu verwendet, mittels eines Softwareoder Firmware-Programms diese eben in der ersten Zwischensprache
entwickelten Anweisungen in einen in einer zweiten Zwischensprache geschriebenen Satz von Programmanweisungen umzuwandeln,
welcher genau das gleiche Programm beinhaltet, jedoch in der zweiten Zwischensprache. Der nächste Schritt ist die Anwendung
der in der zweiten Zwischensprache vorhandenen Programmanweisungen auf einen Maschinencodeübersetzer, welcher ebenfalls
ein "Kleinprogramm"-Paket ist, das dazu entwickelt wurde, die zweite Zwischensprache in den Objektmaschinencode einer be-
10.10.72
30981 6/0869
stimmten Computerart umzuwandeln. Jede Erstellung eines Computers
erfordert einen speziellen Maschinencodeübersetzer,
der innerhalb des betreffenden Systems anwendbar ist.
10.10.72
30981 6/0869
TXI
Mehrere Ausführungsformen der Erfindung und Einzelteile davon sind in den Zeichnungen dargestellt und
werden im folgenden mit Bezug auf diese als Beispiele beschrieben. Es zeigen:
Fig. 1 ein Blockschaltbild der verschiedenen
Stufen eines Computersystems mit einem universellen Compiler
nach der Erfindung,
Fig. 2 ein Blockschaltbild einer besonderen Ausführungsform nach der Erfindung, bei welcher eine Anzahl
von üblicherweise verwendeten Ursprungssprachen und eine beliebige Klasse von Computern sowie SprachUbersetzer vorgesehen sind, welch letztere die Verwendung dieser Anlage
mit dem universellen Compiler ermöglichen,
Fig. 3 eine schematische Darstellung der aufeinanderfolgenden Schritte, die verwendet werden, um ein
Ursprungsprogramm an einen speziellen Hostcomputer anzupassen ,
Fig. 4 ein Schemabild, welches zeigt, wie durch Elemente des Computersystems auf die verschiedenen Darlegungen des Ursprungsprogrammes eingewirkt wird,um
dieses für die endgültige Verwendung des Hostcomputers in fortgeschrittene Stufen oder Zustände umzuformen,
Fig. 5 ein Blockschaltbild, welches die Struktur einer "ausführbaren" Anweisung im Format einer ersten
Zwischensprache zeigt,
Figuren 6 und 7 als Beispiele dienende Baumschemas, welche die Informationshierarchien in einer neuen Metasprache
darstellen,
der Satz von Hauptinformationsstrukturen, genannt "groups",
diein Haupt-Untersätze unterteilt wird,/aufeinanderfolgend
weiter in kleinere Untersätze aufgeteilt worden,
3Ü98 16/0869
Fig. 9 einen Organisationsplan zur Darstellung, wie der Satz aller Informationsefcmente, e, in zwei Haupt-Untersätze
aufgeteilt ist und diese Untersätze aufeinanderfolgend in kleinere Untersätze getrennt werden, so daß sich eine Hierarchie
von in Gruppen zusammengefaßten Informationselementen ergibt,
Fig, 10 eine Darstellung über die Art der Anwendung der neuen Metasprache zur Spezifizierung einer Art von WENN- bzwe
IF-Anweisungen, wobei eine Informationseinheit Ein in expandierter
Form von Informationen mit aufeinanderfolgend niedrigeren Komplexitätsniveaus dargestellt ist, und
Figuren 11 bis 14 Blockschaltbilder verschiedener Konfigurationen von Computersystemen, welche den universellen
Compiler aufweisene
Die integrierte Bauweise (large scale integration = LSI) in der Halbleitertechnik hat weitreichende Auswirkungen auf die gesamte, Informationen verarbeitende
Industrie« Das Vorhandensein von verhältnismäßig billigen
und zuverlässigen Hardware-Bausteinen, welche komplexe logische Schaltungen enthalten, eröffnet die reale Möglichkeit
der Entwicklung von noch leistungsfähigeren Computersystemen. Dem stehen auf der anderen Seite die immer weiter ansteigenden
Kosten und die ansteigende Komplexität der Computer-Software entgegen, was hinsichtlich der Computersystemarchitektur
und der Zusammenwirkung von Hardware und Software neue Lösungen erfordert«
Die Programmumwandlung benötigt häufiger mehr
Computerzeit als die Ausführung des eigentlichen Programmes. Ein bedeutender Anteil der Computerleistung muß für die
übersetzung von höheren Programmiersprachen in eine Maschinensprache aufgebracht werden. Die Compiler wurden von 10 bis 40 K-Wörtern für FORTRAN oder COBOL bis hinauf zu und über 195 K-Wörtern für eine Version von FORTRAN vergrößert. Stunden der
309816/0869
teuren Computerzeit werden durch den Compiler verbraucht. Andere Unwirtschaftlichkeiten werden außerdem durch zeitraubende Vorgänge, wie beispielsweise Compiler- und Programmfehler-Beseitigung und -wartung verursacht. Bei MuItiprogramra-
und Timesharing-Systemen verursacht das Compilen merkliche System-Wartungskosten durch verstärkten Programmaustausch.
Ferner benötigen die Computer infolge der Kernbedürfnisse der Compiler größere Hauptspeicher.
Allgemein ist zu sagen, daß die Compilerkosten eine exponentielIe Funktion der Größe der Compileraufgabe
sind, weiche in eine integrierte Einheit eingeschlossen ist. Das weitere Wachsen der Komplexität einer Ursprungssprache
ist infolge der größer werdenden Abmessungen und Kosten des Compilers bei Verwendung üblicher Compilertechniken
ernsthaft beschränkt. Durch Aufteilung der Compileraufgaben in unabhängige, voneinander getrennte Module, weiche die
Benutzer-Problemtransformationaufgabe von der Sprachsyntax und der semantischen Aufgabe trennt, können diese Beschränkungen verringert und die Compileraufgabe vereinfacht werden.
Typischerweise versuchen Compiler nicht, Sprachübersetzungsaufgaben von der Problemtransformation zu trennen,
so daß konsequenterweise jegliche Änderungen entweder der Ursprungssprache oder des Maschinencodes Änderungen durch
die ganze Compilation hindurch hervorrufen kann. Ursprungssprachen und Computer-Hardware sind einem ständigen Zustandef1uß unterworfen und als Ergebnis hiervon muß jedes Mal, wenn
ein neuer Computer entworfen wird, für jede Ursprungssprache ein neuer Compiler geschrieben werden. Viel von dieser Arbeit
könnte vermieden werden, wenn die Tatsache erkannt und vorteilhaft ausgenützt würde, daß Compileraufgaben in zwei unabhängige
Klassifikationen getrennt werden können; Sprachübersetzung und Problemübersetzung. Indem man diese Aufgabengruppen im
Compiler getrennt hält, kann die sich durch eine Änderung der Ursprungssprache oder der Computer-Hardware ergebende
309816/0869 I 0. OKI. 1972
Auswirkung auf den Sprachübersetzungsteil des Compilers
begrenzt werden; Der die Problemlibersetzung des Benutzers betreffende Teil des Compilers braucht nicht geändert zu
werden, da eine Änderung der Sprache, die zur Bestimmung des Problems dient, das Problem selbst nicht ändert.
Der gemäß der Erfindung angesprochene universelle Compiler beruht auf der eindeutigen Trennung von "Sprachübersetzung" (language translation) und "Problemübersetzung"
(problem transformation). Wenn ein Ursprungsprogramm als Kombination eines Problemalgorithmus und der Darstellung
jenes Algorithmus in einer Ursprungssprache definiert ist, dann besteht die Problemübersetzung in der kartenmäßigen
Aufzeichnung des Problemalgorithmus von einem komplexen
funktionsorientierten Format in ein einfacheres Betriebsablaufformat. Die Sprachübersetzung besteht in der Änderung
des Formats der Aufzeichnung des Algorithmus. Dies wird dadurch bewirkt, daß die Ursprungssprache zunächst in
eine Zwischensprache (IL) umgewandelt wird, welche von der Ursprungssprache unabhängig ist.
Dann wird das in der Zwischensprache vorliegende Problem aus einem Satz von Prozeduren und algebraischen
Ausdrücken in eine Folge von Computeroperationen umgewandelt.
Abschließend wird durch eine zweite Sprachübersetzung die obengenannte maschinenunabhängige Ausgabe in Operationdscodes
für einen bestimmten Computer umgewandelt. Durch Festlegung des Compilers als drei unabhängige Moduls werden diese sich
normalerweise durch eine Änderung ergebenden Auswirkungen weitgehend eingeschränkt. So beeinflußt eine Änderung in der
Ursprungssprache lediglich den ersten Modul, den übersetzer der Ursprungssprache. In gleicher Weise hat das Einführen
eines neuen Computers mit einem neuen Maschinencode-Instruktionssatz lediglich die Änderung oder den Ersatz des zweiten
Sprachübersetzers zur Folge. In jedem Falle bleibt der
309 8 16/086 1 0. OhT.
Problemübersetzungsteil des Compilers und ein Sprachübersetzer unverändert. Wenn ein neuer Computer eingeführt wird,
der eine neue Implementationssprache aufweist, so kann es
sein, daß der Compiler in die neue Implementationssprache
Übersetzt werden muß. Jedoch ist selbst diese Aufgabe bedeutend kleiner als die Obersetzung eines konventionellen Compilers,
Ein großer Teil des Compilers Hegt in einer Zwischensprache vor, welche sowohl von der Ursprungssprache als auch
von dem speziellen, für die Programmausführung verwendeten Computer unabhängig 1st. Demzufolge kann es möglich sein,
diesen Teil des Compilers in Hardware oder Firmware zu Implementieren, da er auf Änderungen im wesentlichen unempfindlich ist.
Um die Compileraufgaben in unabhängige Bausteine zu unterteilen und dabei die Komplexität zu verringern, wird
die Problemübersetzung von der Sprachübersetzung getrennt.
Hierbei ist es erforderlich, daßman das Problem 1n einer
Sprache definieren kann, welche von der Ursprungssprache unabhängig 1st. Dies ist der Zweck der Verwendung einer
Zwischensprache (intermeiiate language * IL). Hiermit 1st
auch die Natur der IL definiert. Die IL-Sprache kann In
zwei unabhängige Teile unterteilt werden: einen nichtausführbaren und einen ausführbaren Teil. Der nichtausfUhrbare
Teil bestimmt im wesentlichen die Charakteristiken der Daten, während der ausführbare Teil die bei den Daten auszuführenden
Funktionen festlegt.
Alle nichtausführbaren Ursprungsprogramminformationen werden dem universellen Compiler mittels Tabellen zugeführt,
weiche im folgenden kollektiv als eine Symboltabelle bezeichnet werden. Jeder Bezeichner im Ursprungsprogramm nimmt ein
Symbol-Tabellenwort ein. Verschiedene Attribute dieses
Bezeichners werden während der Sprachübersetzung der Ursprungssprache in die entsprechenden Bitpositionen in diesem Wort
30981 6/0869 1 (I. UKl. 1.I72
codiert. Die "Bezeichner" sind Großbuchstaben, wie beispielsweise A, B, C oder X, Y, Z, welche den Gegenstand in einem
bestimmten Algorithmus identifizieren. Beispiel: Bezahlung =
gearbeitete Stunden mal Stundensatz oder C=A mal B. Hierbei sind also A, B, C, Bezahlung, gearbeitete Stunden und Stundensatz "Bezeichner".
Der ausführbare Teil definiert die erforderlichen Funktionen oder Operationen und die Folge, in welcher diese
auszuführen sind. Die gleiche Funktion kann in jeder Ursprungssprache auf eine andere Art definiert werden. Jedoch ergibt
das Erfordernis der Zwischensprache IL nur einen Weg hinsichtlich der Definierung einer bestimmten Funktion. Die Gesamtanzahl von in IL vorliegenden Zwischensprachen ist größer als
die bei irgendeiner Ursprungssprache vorhandene Anzahl, da die verschiedenen Ursprungssprachen nicht alle den gleichen Satz
von Funktionen umfassen. Des weiteren erfordert die IL einen größeren Satz von Operatoren als eine einzelne Ursprungssprache
Bei der im Rahmen der Erfindung vorgeschlagenen praktischen Implementation ist der-IL-Eingang zu dem universellen Compiler
so entworfen, daß er für COBOL, FORTRAN und PL/1 sprachunabhängig ist, so daß praktisch alle gegenwärtig geschriebenen
höheren Programmiersprachen erfaßt werden. Wenn einmal dieses Konzept einer IL aufgestellt ist, kann es ausgedehnt werden,
indem später mehr Funktionen und mehr Operatoren hinzugefügt · werden, ohne daß sich Komplikationen einstellen, wie sie durch
solche Änderungen bei den bekannten Compilern auftreten. Tatsächlich kann das "Denken" einer Ursprungssprache in
Terms von neuen Problemfunktionen eine große Hilfe bei der mehr methodischen Entwicklung einer leistungsfähigeren,
einfach zu verwendenden, verallgemeinerten Ursprungssprache sein. Hinzu kommt, daß die Trennung von Datenattributen mit
den Konzepten einer gemeinsamen Datenbasis kompatibel ist.
309816/0869
■·*·"■
2249352
Zur Trennung der Problemübersetzungsaufgabe von der Sprachübersetzung muß das Problem in einer solchen
Weise festgelegt werden, daß es von Ursprungssprachen unabhängig ist. Dies ist die Aufgabe des Ursprungssprachenübersetzers. Der Ursprungssprachenübersetzer (source language
translator = SLT) befreit die Ursprungssprache von dem allgemeinen Wortüberfluß, der Wortmacherei und persönlichen
Eigenarten. Für jede Ursprungssprache ist nur ein SLT erforderlich. Der Ursprungssprachenübersetzer erkennt
Ursprungssprachen-Operatorcodes und Schlüsselwörter und übersetzt diese ebenso wie ausführbare Prozeduren und
algebraische Ausdrücke in eine Zwischensprache (Format IL-I).
Er setzt alle Namen und deklarierten Attribute der Daten und der Umgebung in die Symboltabelle, wobei die Namen
(Operanden) in dem ausführbaren Programm durch Symboltabellenadressen ersetzt werden. Das IL-1-Eingangsformat
für den Ausdruck kann abwechselnd aus Operanden und Operatoren bestehen. Wenn in einem in der Ursprungssprache vorhandenen
Ausdruck zwischen zwei Operatoren kein Operand vorhanden ist, so liefert der Ursprungssprachenübersetzer SLT einen
besonderen "Kein-Operandll-Code. Dies ist also eine Methode
zur Vermeidung einer doppelten Sprachübersetzung innerhalb des universellen Compilers.
Ursprungssprachen mit einem vorangehenden Algorithmus, der von dem vorangehenden IL-Algorithmus abweicht,
werden durch von dem SLT hinzugefügte runde Klammern übersetzt.
Ein Problem-Übersetzungsmodul (Generalized Compiler, GC) wird dazu verwendet, die ausführbaren Prozeduren und Ausdrücke (welche in einem von der Ursprungssprache unabhängigen
Standard-IL-1-Format vorliegen) von einer Problemform oder
funktionsorientierten Form in eine Computeroperationsform umzuwandlen, die aus einer Folge von Maschinenniveau-Instruktionen
1 0 OKi Γ" 309816/0869
besteht, welche aufgrund von elementaren Variablen ausgeführt werden. Der universelle Compiler GC zeichnet die
Folge von Operationen eines Ausdruckes entsprechend einem allgemein verwendeten Vorrangalgorithmus. Zusätzlich zu dem
Ausdruck Processor-Programm enthält der GC auch Programme für die übersetzung von allen anderen ausführbaren Anweisungen.
Entsprechende Codefolgen werden dazu erzeugt, um Steuerinformationen in Funktionen und Unterprogramme sowie zurück
zu übertragen und um DO-Schleifenzustände zu prüfen sowie
DO-Schleifenvariable zu erhöhen.
Der Maschinencodeübersetzer (MCT) ist ein einfacher Sprachübersetzer, der dazu dient, die Ausgangsoperationscodes
des GC in die Maschinencodes eines bestimmten Computers, zu übertragen. Er kombiniert Symboltabellen-Informationen und
Maschinencodegerüste mit den Ausgangsdreiklängen (Operand-Operator-Operand) des GC.
Fig. 1 zeigt die Systemorganisation, bei welcher das in einer höheren Sprache, zum Beispiel Fortran, Cobol u.s.w.
vorliegende Ursprungsprogramm von einem Ursprungssprachübersetzer 10 (SLT) verarbeitet wird, der ausführbare Anweisungen
von nicht ausführbaren Informationen trennt und sie in eine erste Zwischensprache (IL-I) umwandelt. Die Daten von dem
SLT 10 (Source Language Translator) werden dann von einem universellen Compiler 11 (GC) behandelt, welcher die Informationen
in eine zweite Zwischensprache (IL-2). umwandelt, welche ihrerseits dann von einem MCT 14 verarbeitet wird, um di«
Programminformationen in einen speziellen Objektmaschinencode für den Host-Computer umzuwandeln.
Der universelle Compiler (GC) 11 versieht die Funktion "Problemübersetzung" mit einem Problemübersetzungsprogramm
12 und die Funktion von "Symbolübersetzung" mit einer Symbol-
tabel Ie 13. ****>»„
30961 6/0869
1 0. OKI. 1977
Fig. 2 zeigt ein spezielleres System, bei welchem
jede einzelne höhere Ursprungssprache, zum Beispiel C, F oder A von einem besonderen Ursprungssprachlibersetzer 10c,
1Of, 10a u.s.w. verarbeitet wird, um Informationen in IL-I
umzuwandeln. Dann liefert der GC 11 die Programminformationen
in IL-2, wodruch die Maschinencodeübersetzer als 14 1t oder
ml'
14m2, oder 14m3 definiert werden, abhängig von der Art des
Host-Computers.
Die vier grundsätzlichen Aufgaben des Ursprungssprachenübersetzers sind:
1) Identifizierung aller Ursprungssprachen-Symbole,
2) Erstellen einer Symboltabelle mit allen Datenatributen,
3) übersetzen aller ausführbaren Ursprungssprachen-Anweisungen in eine Zwischensprache, und
4) Feststellen von Ursprungssprachen-Syntaxfehlern. Alle Ursprungssprachen-Symbole müssen erkannt werden.
Der Ursprungssprachen-Charaktersatz wird durch eine entsprechende
übersetzung an das IL-Codeformat angepaßt. Jeder Begrenzer
(Symbol, welches "Trennung" von Informationsposten für Steuerzwecke mitteilt) wird durch seinen äquivalenten IL-Code ersetzt.
Jeder Bezeichner wird der Symboltabelle hinzugefügt, falls er nicht bereits aufgeführt ist. In jedem Falle wird jeder Bezeichner bei allen ausführbaren Anweisungen durch seine Symboltabellenadresse ersetzt.
Fig. 3 zeigt in Form der aufeinanderfolgenden Verfahrensschritte die Programmzustände (a),(b),(c) und (d), bei
welchen das in einer höheren Sprache vorliegende Ursrpungsprogramm in eine erste Zwischensprache umgewandelt wird, dann
in eine zweite Zwischensprache und schließlich dieses Ursprungsprogramm im Objektmaschinencode vorliegt, in welchem
es auf dem Host-Computer verarbeitet werden kann.
Fig. 4 zeigt die Auftreffpunkte von: das SLT-IO-Programm auf das Ursprungsprogramm (a), um es in den Zustand
(b) umzuwandeln ; das GC 11-Programm,welches das Ursprungsprogramm vom Zustand (b) der ersten Zwischensprache in den
Zustand (c) der zweiten Zwischensprache umwandelt; das MCT 14-1 D. MT ?-?7? 309816/0869
Programm, welches das im Zustand (c) vorhandene Ursprungsprogramm von der im Zustand (d) vorhanden, zweiten Zwischenpsrache in den Objektmaschinencode umwandelt.
Symbole in einer Ursprungssprache können derart kategorisiert werden, daß sie die in der folgenden Tabelle
aufgeführten Symbole enthalten.
(A) Begrenzer
1. Operator
a. Primitive (+, -, +, .GE., etc.)
b. Schlüsselwort ausführbarer Befehl (DO, GO TO, MOVE, etc.)
2. Punktuation (Trennung, Steuerung)
(B) Bezeichner
1. Schlüsselwort: Programm-Struktur-Name (Prozedur, Block, Division, Abschnitt, etc.)
2. Anweisungsnummer
3. Variable (enthaltent Constante, Literais)
4. Funktion
5. Index
6. Argument .
7. Ausdruck
(C) Bemerkung
(D) Ungültiges Symbol oder Schlüsselwort
Alle die Daten erklärenden und die Umgebung beschreibenden Informationen werden in Tabelle 13 aufgeführt.
Bemerkungen werden gestrichen. Die Symboltabelle nimmt den Platz nicht ausführbarer Anweisungen ein, wenn das Ursprungsprogramm in der Zwischensprache vorliegt.
Jede ausführbare Ursprungssprachen-Anweisung wird in eine Zwischensprache umgewandelt. Wesetnlich ist, daß dieser
Vorgang das Eliminieren von überflüssigen Worten und Bezeichnungen sowie persönlichen Eigenarten und das Neuordnen
der Information in einem sprachenunabhängigen Format beinhaltet. .Schlüsselwörter werden durch den äquivalenten IL-Code
ersetzt, welcher stets als das erste Wort einer Anweisung erscheint. Argumente und Parameter erscheinen in einer bestimmten
Reihenfolge getrennt von Komas oder irgendwelchen anderen
H. 0KU972 309816/0869
Begrenzern, jedoch ohne die Speicher- und Lesehilfen, die man in Ursprungssprachen findet.
Ein "Ausdruck-Ende"-Code wird an das Ende eines jeden Anwedsungs-Funktionsausdruckes hinzugefügt und der
Name des Ausdruckes wird in einem bestimmten Bereich in der Symboltabelle 13 gespeichert, so daß die Symboltabellenadresse, welche den im Ursprungsprogramm vorhandenen Namen
ersetzt, als ein Ausdrucksname identifizierbar ist. Anweisungsfunktionen (FORTRAN) und ähnliche Ursprungsspracheninstrumente
spezifizieren die Lösung einer Gleichung jedesmal dann, wenn der Name des Ausdruckes erscheint.
Der IL-Code "kein Operand" wird zwischen jedes Paar
von Operatoren in dem Ursprungsprogramm eingesetzt, welche nicht durch einen Operanden voneinander getrennt sind, wie dies
zur Vermeidung einerDuplizierung der Syntaxerkennung im
universellen Compiler erforderlich ist.
Die in die Zwischensprache übersetzten Ursprungssprachenanweisungen werden fortlaufend numeriert. Ungültige
Zeichen werden notiert und in Leerstellen umgewandelt. Fehlerprogramme werden für ungültige Schlüsselwörter und für andere
Syntaxfehler aufgerufen. Runde Klammern werden jeweils dort hinzugefügt, wo sie zur Umwandlung von in der Ursprungssprache
vorhandenen Vorrangigkeiten in die Vorrangigkeitsvereinbarungen
der Zwischensprache erforderlich sind, falls eine Differenz besteht.
Ursprungssprachen-Syntaxfehler, wie beispielsweise illegale Zeichen, Begrenzer, Schlüsselwörter und Bezeichner
(Identifizierung) werden ermittelt.
An dieses Computersystem können alle bekannten Techniken zur Erkennung und übertragung von Ursprungssprachen
angepaßt werden. Syntax-ausgerichtete Compilung und tabellengetriebene Compilung sind die gegenwärtig am häufigsten verwendeten Techniken. Die Charakteristiken des erfindungsgemäßen Systems sind:
1. Die Obersetzung ist viel einfacher, da die übersetzung in eine andere höhere Sprache
vorgenommen wird, anstatt in einen Maschinencode,
3 0 9816/0869
2. Das Auftreten einer Änderung in der Ursprungssprache ist auf einen kleinen Teil des Compilersystems begrenzt und beeinflußt nicht das gesamte
Computersystem.·
Die grundsätzlichen Aufgaben des Problemübersetzungsmodul 12 sind:
1) übersetzen von Problemfunktionen in Computeroperationsfolgen ,
2) Optimierung des erzeugten Objektcodes, und
3) Fehlerermittlung.
Die ausführbaren Anweisungen werden vom niveauhöheren,
funktionsorientierten Format in einen Computer-Hardware operationsorientierten Code umgewandelt und/wird durch Neuordnung die Folge, in welcher die Operationen entsprechend
den Operator-Vorrangigkeitsregeln einer Zwischensprache auftreten, als Teil des Systems aufgestellt. Die Zwischensprache
verhalt sich derart, daß
(a) das Schlüsselwort in jeder Anweisung die Problemübersetzung-Steuerung auf das zur übersetzung
dieser Anweisung erforderliche Programm richtet. Bei vielen Anweisungen kann eine Qirektüöepsetzung
vorgenommen werden, indem ein Codegerüst und Ersatzargumente von der Anweisung für Scheinvariable verwendet werden.
(b) Zur übertragung von Ausdrücken innerhalb der Anweisung ein AusdruckUbersetzer (Expression Processor) verwendet wird. Dieser übersetzer verwendet einen oder mehrere Kellerungsstapel
(Push-Down-Stack), um dadurch die Neuordnung der Ausdrücke entsprechend der aufgestellten Vorrangigkeitskri terien zu unterstützen. Jedesmal, wenn
ein Triad (zwei Operanden und ein Operator) mit einem Operator geringerer Vorrangigkeit zusammentrifft, wird dem Ausdruck ein Triad als IL-Ausgangscode entnommen. Das Triad ( Dreierausdruck)
wird in dem Ausdruck durch die -Symboltabellen-309816/0869
adresse ersetzt, welcher festlegt, wo die Triad-Ausgangscodeoperation gespeichert werden soll.
Der Objektcode wird dadurch optimiert, daß beispielsweise vermieden wird, daß die Lösung des gleichen Ausdruckes wiederholt ausgeführt wird, sofern die Werte sich in
der Zwischenzeit nicht geändert haben. Die Anweisung der Indexregister, die Adressenberechnung zu beschleunigen, ist
eine andere Optimierungstechnik. Falls die Anzahl der Register
begrenzt ist, wird durch die Optimierung festgelegt, daß die innerste Schleife einer DO-Schleife Vorrang erhält vor den
äußeren Schleifen. Konflikte können auch zwischen lokaler und globaler Optimierung auftreten.
Die Fehlerermittlung enthält das Feststellen von
illegalen Folgen von Operanden und Operatoren, welche der Ausdrucksübersetzer ermittelt. Außerdem ermitteln die verschiedenen SchlüsselwortrAnweisungsprogramme fehlende Argumente,
für welche keine Alternativen spezifiziert und ii keine
Ergänzungswerte vorgesehen sind.
Die grundsätzlichen Aufgaben des zweiten Sprachübersetzers sind:
1) übersetzen des Problemtransformations-Ausganges
(Triads) in den Maschinencode für eine bestimmte Maschine unter Verwendung von Codegerüsten und
Symboltabellen-Informationen. Dies wird in Fig. durch Maschinencodeübersetzer 14 ausgeführt.
2) Entscheiden der Datentypedominanz für Operationen
bei Operanden von zwei verschiedenen Datentypen. Erzeugen eines zur Umwandlung der Datentype erforderlichen Codes.
3) Zuordnen der Speicherstellen an alle Objektcodebezeichner in der SymboltabelIe.Ersetzen der
Symboltabellenadressen dieser Bezeichner durch
die zugeordneten Speicherstellen.
Der Zweck des zweiten Sprachübersetzers ist es, die maschinenniveauaufweisenden ,maschinenunabhängigen Problemtransformations-Ausgangstriads und andere maschinenunabhängige
30981 6/0869
Instruktionen in Instruktionen (Primitiv-Code) für eine
bestimmte Maschine umzuwandeln. Der wichtige zu beachtende Punkt ist, daß die einzige notwendige Einwirkung auf einen
Compiler entsprechend einer Maschinencode-Änderung durch eine Sprachübersetzung gegeben ist. Demzufolge sollte der
Compiler so ausgebildet sein, daß die jeweils nicht von der Erzeugung des Maschinencodes betroffenen Teile des Compilers
von den besonderen Eigenschaften einer speziellen Maschine unabhängig sind. Dadurch wird sichergestellt, daß die sich
bei einer Änderung auf eine neue Maschine auswirkenden Folgen strikt auf die den Code ergebenden Gerüste beschränkt
sind. Es ist die Aufgabe des Codegenerators, den Objektcode bereitzustellen, der zur Ausführung der Prograjnminstruktionen
auf einem bestimmten Computer erforderlich s4ml. Dazu verwendet
der Codegenerator in Kombination die am Ausgang des Problemtransformationsmoduls, Ausdruckübersetzers und in den
Symboltabellen vorhandenen Informationen und die Codegerüste.
Die Auswahl des betreffenden Codegerüstes hängt nicht nur von der betreffenden Maschineninstruktion 9 wie sie durch
den Operator gegeben ist (Symbole zur Darstellung der "Aktion"-,
die von den Bezeichnern oder Operanden auszuführen sind)8
sondern auch von den Attributen der betroffenen Daten ab. Die Attribute der Daten sind für jeden Operanden jeweils "in der
Symboltabelle an der Adresse spezifiziert.bzw. enthalten»
welche den Wert des Operanden darstellt« Jedes Symboltabellen-Attributfeid
kann als Teil einer Mikroprogramm-Instruktion angesehen werden, welche die Folge der Maschineninstruktionen
festlegt, die für eine bestimmte Kombination von Attributen erforderlich sind.
Jede Datentype hat bei den Operationen von zwei Operanden ein vorbestimmtes Dominazverhältniss. So müssen
als Beispiel bei einem Multiplikationsvorgang, bei welchem
eine Festpunkt-Zahl und eine Gleitkomazahl auftritt, Maschinencodeinstruktionen
vorgesehen sein, um die Datentype einer der Zahlen entsprechend umzuwandeln, bevor die Multiplikations-
30ββ16/0869
Instruktion ausgeführt werden kann. In diesem Falle dominiert das Gleitkomma vor dem Festpunkt bzw. Festkomma und demzufolge
wird die Festkomma-Zahl in eine Gleitkomma-Zahl umgewandelt. Nach der Multiplikation muß das Ergebnis wiederum in der Weise
umgewandelt werden, daß es der Type entspricht, welche für die Antwort vorgesehen ist.
Die abschließende Aufgabe des zweiten Sprachübersetzers besteht darin, jede Symboltabellenadresse in dem Objektcode durch die Speicheradresse zu ersetzen, die ihr zugeordnet und in der Symboltabelle aufgeführt ist« Diese Aufgabe
wird erledigt, nachdem das Programm in dem Maschinencode für einen bestimmten Ziel-Computer vorliegt, sofern es möglich ist,
daß die Obersetzung in einen bestimmten Maschinencode nicht eins-zu-eins ausgeführt werden kann. Falls nach der Speicherzuordnung die Einfügung einer zusätzlichen Instruktion erforderlich wird, so muß jeder Bezug auf eine der Adressen,
welche über den Punkt der Einfügung hinausgeht, lokalisiert und geändert werden. Eine solche Aufgabe wäre aber viel zu
kompliziert, um noch als praktikabel angesehen werden zu können.
Funktionelle Organisation: die Funktion von IL 1st es, die Anschlußstellen des Benutzerprogramms mit dem universellen
Compiler zu beschreiben. Es weist Formate auf, welche sowohl von der Ursprungssprache als auch vom Computer unabhängig sind,
auf weichen das Benutzerprogramm ausgeführt wird. Die Anweisungen von Benutzerprogrammen fallen in zwei Kategorien:
1) nicht ausführbare Information und
2) ausführbare Anweisungen.
Nicht ausführbare Anweisungen werden verwendet fur sich nicht ändernde Informationen, wie beispielsweise Datenattribute, Dateiattribute, Speicherzuordnungen und Steuerinformationen. Bei der IL ist diese Information in Form einer Symboltabelle vorhanden«
Ausführbare Anweisungen beschreiben die aufgrund der Ursprungsdaten während des Progrimmabiaufes auszuführenden
Aktionen, um dadurch die Lösung des Anwenderproblems zu erhalten.
309816/0869
Ausführbare Anweisungen werden in dem universellen Compiler vom Format einer höheren9 funktionsorientierten Sprache,
IL-I, in ein Maschinenniveau aufweisendesB operationsorientiertes
Format IL-2, umgewandelt.
Nichtausführbare Informationen:
Vor Beginn der Problemtransfemation muß die Information
von nichtausführbaren Anweisungen in Symboleingaben durch den SLT 10 von Fig. 1 übersetzt werden«, Zusätzlich muß jeder bei
einer ausführbaren Anweisung auftretende Bezeichner in die Symboltabelle eingetragen werden. Demzufolge enthält die
Symboltabelle 13 die Namen aller Bezeichner in dem Ursprungsprogramm und die Attribute, die festgelegt wurden.
Die Attribute werden in der Symboltabelle in Felder gruppiert. Jedes Attribut innerhalb einer Gruppe kann dadurch
spezifiziert werden, daß in dem betreffenden Feld der zugehörige Code plaziert wird. Falls in das Feld kein Code plaziert
wurde, wird ein Ergänzungscode verwendet,, Die durch den Compiler
zugeordneten Ergänzungscodes werden bereits vor Beginn der Sprachübersetzung in die Symboltabelle aufgenommen«, Der Pro·»
grammierer kann in dem Programm seine eigene Wahl an Ergänzungsattributen treffen.
Zusätzlich zu Datenattributen enthalten nichtausführbare Informationen in dem Ursprungsprogramm auch Namen
und Größen von Gruppen, relative Speicherstellen von Bezeichnern
(COMMON und EQUIVALENCE), Formate von Daten in externen Karteien, Editionsspezifikationen, Informationen über die Hierarchiestruktur
von Daten, externe Namen, Anweisungs-Funktionsnamen, Eingangsnamen, Funktions- und Bücherei programme und Kommunikationen
mit dem operierenden System und Compiler«, Alle diese Informationen werden durch den (SLT) Ursprungssprachenübersetzer
10 in die Symboltabelle 13 gebracht.
309816/0869
Während der Problemtransformation werden zusätzliche Namen und Fakten der Symboltabelle hinzugefügt. Die der
Speicherung von Zwischenergebnissen zugeordneten Namen werden
ebenfalls beigefügt. Zusätzlich können Aufzeichnungen der gegenwärtigen Zeitperiode aufgenommen werden, bei welcher
jedes Zwischenergebnis in dem Programm errechnet wurde, ohne
eine sich anschließende Änderung einer der für die Berechnung verwendeten Variablen.
Die Symboltabelle wird von dem Maschinencode-Öbersetzermodul 14 (MCT) in Verbindung mit Codegerüsten zur
Erzeugung von Maschineninstruktionen verwendet. Die jeweils gewählte Folge von Maschinenspracheninstruktionen hängt nicht
nur von dem betreffenden Operator ab, sondern auch von den Attributen der Operanden. Während dieser Zeit sind alle in
dem Benutzerprogramm vorhandenen Operanden Symboltabelleadressen, wodurch es einfach ist, die Attribute herauszufinden,
Der MCT 14 (Maschinencodeübersetzer) ordnet jedem Operanden in der Symboltabelle die Speicherstellen zu. Diese
Adressen können entweder absolut oder relativ sein. Relativadressierung wird insbesondere bei Multiprogrammsystemen
dazu verwendet, dem operierenden System zu gestatten, die tatsächlich zu verwendende Speicherstelle zuzuordnen.
Zu Beginn der Problemtransformation bzw. Problem-Übersetzung befinden sich die ausführbaren Anweisungen im
Format IL-I und bestehen aus einem Schlüsselwort, dem Argumente folgen, denen ein EOE-Code (end of expression)
nachgeordnet ist. Argumente können Elemente oder Ausdrücke sein. Ausdrücke bestehen aus einer Folge von Operand-Operator-Paaren. Operanden sind Symboltabellenadressen entweder von
Elementen oder Ausdrucken.
Ausdrücke können Ausdrücke enthalten, die für jedes Schachtelungsniveau innerhalb der Grenzen des
309816/0869
Ausdruckübersetzer-Kellerungsstapels Ausdrücke enthalten.
Jeder Ausdruck wird mit einem EOE-Code (end of expression) abgeschlossen, welcher den Stapel um eine Stufe hochschnellen
läßt. Der EOE-Code des Arguments befindet sich auf der ersten Stufe bzw. beim ersten Niveau und bewirkt eine Rückkehr der
Steuerung von dem Ausdruckübersetzer zu dem Programms das
durch das Schlüsselwort der gerade verarbeiteten Anweisung spezifiziert wird. Der Ausdrucksübersetzer bringt auch die
Symboltabellenadresse des dem Ausdruck zugeordneten Namens
wieder zurück. Der Name ist die Adresse9 bei welcher der
Wert des Ausdruckes gespeichert ist» Die Namen von Ausdrücken
werden in einem speziellen Feld der Symboltabelle gespeichert,
so daß der Compiler innerhalb von Ausdrucken Ausdrücke erkennen
kann, indem er die Werte der Operanden anschaut» weiche alle
Symboltabellenadressen sind.
Während der Problemtransformatiofii wird jede ausführbare
Anweisung in eine Folge von einfachen Instruktionen umgewandelt, welche entweder aus einem Infix-Operator und
zwei Operanden oder einem Prefix-Operator und einem Operanden
besteht*.
Das Schlüsselwort bestimmt das für die Transformation zu verwendende Programm. Die Position des Arguments in der
Folge von Argumenten legt fest8 wie es vom Compiler umgewandelt
bzw. verwendet wird. Allgemein ist zu sagen«, daß die Argumente
von dem Ausdruck-Übersetzer bzw» Expression Processor verarbeitet werden, welcher die Folge von Maschineninstruktionen
erzeugt, die zur Berechnung des Wertes des Arguments erforderlich sind. Die Adresse dieses Wertes wird mit dem Codegerüst
für die zu verarbeitende Anweisung kombiniert. Das Codegerüst für eine ausführbare Anweisung ist eine Folge von Instruktionen
auf Maschinenniveau (Triads entsprechend dem Ausgang des Ausdruckübersetzers), wobei bestimmte Stellen innerhalb dieser
Folge dem Wert eines jeden Arguments zugeordnet sind. Der Problemtransformationsmodul enthält für jede ausführbare
Anweisung ein Codegerüst. Diese Codegerüste sind maschinenunabhängig
und können nicht mit Codegerüsten verwechselt werden,
309816/0869
die von dem Codegenerator zur Erzeugung eines Maschinencodes für eine bestimmte Maschine verwendet werden. Einige ausführbare Anweisungscompilerprogramme stellen für die Zuordnung
von Indexregistern und Analyse einen größeren Teil des Programmes
zur möglichen Optimierung bereit. Der Ausdrucksübersetzer optimiert auf dem niedrigen Niveau des Suchens nach Duplikattriads, welche eliminiert werden können. Die Symboltabelle
wird zur Speicherung von Informationen verwendet, die zur Optimierung von beispielsweise der letzten Stelle in einem
Programm benötigt werden, bei welcher sich der Wert einer Variablen ändert.
Konzeptmäßig ist der sich durch die Problemtransformation ergebende IL-2-Code maschinenunabhängig. Die Sprachtransformation auf eine bestimmte Maschine wird durch den
der zweiten Sprache zugeordneten Sprachübersetzer ausgeführt, bei dem Beispiel in Fig. 1 also durch den MCT 14-Obersetzer.
Der Zweck dieses Konzepts besteht in der Begrenzung der sich durch eine Änderung im Objektcomputer ergebenden Auswirkungen
(des Computers, auf welchem das umgewandelte Programm ausgeführt werden wird). Dieses Konzept erfordert, daß der Problemtransformationsausgang zu dem Codegenerator definiert und
festgelegt wird als ein Satz von Maschinenoperationen, welche von jeder beliebigen Klasse von Maschinen durch eine Folge
von den Maschinen eigenen Maschineninstruktionen oder Mikroprogramm-Instruktionen ausgeführt werden können.
Die Implementation dieses universellen Compilers (Generalized Compiler) kann gegenwärtige Compilerunterprogramme- und -techniken bis zu dem Ausmaß verwenden, das
möglich ist» ohne daß man als Kompromiß die Sprachübersetzung von der Problemtransformation trennen muß. Das IL-Format
für nichtausführbare Informationen ist eine Symboltabelle,
10.10.1972
309816/0869
wie sie als Beispiel in Fig. 13 dargestellt ist. Diese Symboltabelle
kann eine übliche Symboltabelle sein. Jedoch sind mehr
Felder als für die Symboltabelle irgendeiner Sprache erforderlich, da nicht alle Sprachen den gleichen Satz von nichtausführbaren
Informationen haben. Beispielsweise verwendet COBOL und PL/1
Niveaunummern bzw. Stufennummern, nicht aber
Die im folgenden aufgeführte Tabelle 2 zeigt eine Liste der in die Symboltabelle aufzunehmenden Informationen.
Die Liste kann während des Schreibens des Compilers überprüft und verfeinert werden. Es gibt etwas einen Einblick in die
Größe und Grenzen der Aufgabe. Es wird geschätzt, daß ein
durchschnittliches Programm fünf- bis sechshundert Anweisungen und ungefähr zweitausend Bezeichner (Identifizierer) aufweist.
Tabelle 2
Symbol-Tabellenfelder
Symbol-Tabellenfelder
Gruppe
1. Ausdruck
Feldinhalte
All gemein Type
Compiler-Anmerkung
Gruppe
Bezeichnername (Identifiziername)
Startadresse des Ausdrucks Komponentenstrang Anweisungsfunktion
Externe Funktion Argument Triad
Letzte Stelle im Programm, bei welcher der Wert des Ausdruckes berechnet wurde
2. Variable Feldinhalte
Al lgemein 10.10.1972
Stufen- bzw. Niveau-Nr.
309816/0869
Gruppe
Al!gemein
Klasse
Type
Spei ehe rzuordnungs
Information
Skaiar
Elementar
Argument
Matrix
Struktur
Baum
Fest-/Gleitpunkt Real/Complex Ari thmetik
Logisch
Vergleichsweise Condi tion
Status
Subscriptionsname
Linksbündig/Rechtsbündig
Länge (Präzision) Länge-Bruchteil
Größe in jeder Dimension
Strukturgröße Synchronisiert
10.10.1972 309816/0869
Gruppe
Spei cherzuordnungs· Information
Gruppe
Abhängig von vorhergehendem Feld bzw,Posten
Offset von Beginn der Struktur Gepackt
Füllfeld
Gemeinsam Equivalenz Anfangswerte
Anfang adressenzugeordneter Speicher
Speicherraum erforderlich
Definiert an der Speicherstelle Verwendet an der Speicherstelle
Verknüpft mit der nächsten gleichen Type oder Stufe Verknüpft mit der letzten gleichen
Type oder Stufe Wert an der Speicherstelle geändert
3. Verknüpfung Feldinhalte
Allgemein
Type
Gruppe Bezeichnername Relative Adresse im Programm Verknüpfung mit zusätzlichen Argumenten
Liste von Formalparametern Zurück
Eintritt
Extern -
Funktion
Unterprogramm
4, Inhalte, Literais, Zeichen/Bit Keinen bzw« KetfeW
Feldinhalte
Allgemein
(T. 1972
Beze.ichnerwert Zugeordnete Adresse 309816/0869
Gruppe FeIdinhalte
Al 1 gerne in Type
Gruppe Länge
Teil eines Längenabschnitts
Konstante (Numerisch Literal) Zeichenreihe Bitreihe
5. Programm-Strukturmerkroal
FeIdinhalte
Al!gemein
Type
Gruppe
Anweisungs-Folgenummer
Definiert Verwendet
Anweisung
Absatz
Abschnitt
Division
Prozedur
6. I/0-Format Feldinhalte
Allgemein
Bezeichnername oder -nummer
Zugeordnete Adresse Externes Format (Maske) Aufzeichnungsgröße
Blockgröße Einheit zugeordnet
309816/0869
Einheit
Gruppe
35-
Format
Maske
Lochung
Drucker
Konsole
CRT
Disk
7. AITgemeinregister Feldinhalte
Register zugeordnet Startadresse Befreit bei Adresse
Zeiger Index Basisregister
In der Symboltabelle sind die Bezeichner in Gruppen
eingeteilt, entsprechend den Typen von Informationsfeldern, die für den Bezeichner benötigt werden. Die Gruppen sind:
1. Ausdrucksname (Anweisungsfunktion, Triad,Argument)
2. Variabler Name
3. Verknüpfung -
Eintritt, Extern, Funktion, Unterprogramm
4. Konstante, Literal, Zeichenreihe, Bitreihe
5. Programmstrukturmarke
6. I/0-Format
7. Registeranwendung
309816/0869
22A9852
!!■.-Implementation - Ausführbare Anweisungen
Basisstruktur: Der Ursprungssprachenübersetzer 10 übersetzt
alle ausführbaren Anweisungen des zu übersetzenden Programmes in IL-I, welche das höherstufige Sprachformat des Einganges zu
dem Problemtransformationsmodul ist. Der Ausgang des Problem-Transformationsmoduls ist eine Maschinenstufe-Zwischensprache,
genannt IL-2.
In dem IL-tFormat bestehen die ausführbaren Anweisungen
aus Schlüsselwörtern und Argumenten. Argumente können entweder einfache Posten oder Ausdrücke sein. Ausdrücke sind Folgen von
Operand-Operator-Paaren. Operanden können entweder einfache Posten oder Ausdrücke sein. Fig. 5 zeigt die Struktur von
ausführbaren Anweisungen in dem ersten Zwischensprachenformat, IL-I.
Wo:
einzelnen .Postens
Ausdruck = ioperand Operator} .... EOE
Operand = Symboltabellenadresse eines
Elements oder eines Ausdrucks Operator = Code für die bei den bezogenen
Operanden auszuführende Aktion EOE - Code für "Ende des Ausdrucks"
Schlüsselwörter: Jede ausführbare Anweisung in IL-I weist als
erstes Wort ein Schlüsselwort auf. Das Schlüsselwort bestimmt
die Speicherstelle des Compilerprograrcimes, welches zur Verarbeitung der folgenden Argumente verwendet wird. In der IL-I
befindet sich jeweils ein Schlüsselwort für jede Ursprungsprogramtnfunktion, für welche die Fähigkeit einer Compiling
erforderlich ist. Es ist jeweils nur ein Programm (Routine) in der G.C. für irgendeine der Funktionen erforderlich, obwohl
3098 1 6/0869
jede Ursprungssprache die Funktion in anderer WeIse festlegen
kann.
So wird beispielsweise durch die COBOL-Armeisung
"add A to B giving C".und durch die FORTRAN-Anweisung tsC * -A + B"
jeweils die gleiche Funktion definiert» nämlich die Zuweisungsfunktioh.
Demzufolge kann ungeachtet der Art und Meise» wie die Funktion ursprünglich festgelegt wurde9 das gleiche Programm
diese Aufgabe verarbeiten9 nachdem es einmal in das Standard
G.C.-Eingangsformat, IL-I9 übersetzt wurde. Tabelle 3 zeigt
eine Liste von Schlüsselwörtern in IL-I9 der ersten Zwischensprache.
IL-Schlüsselwörter (höhere Stufe IL)
IL-Schlüsselwort . Zusätzliche Ursprungssprachen1=
Schlüsselwörtern welche in das ' IL-Schlüsselwort und .seine Argumente
übertragen sind
Speichersteuerung | ooen |
ALLOCATE | REPLY8 EVENT |
FREE | |
Operator-Instrukti | SNAPD SYSTEM |
DISPLAY | |
Zustände | |
ON | |
SIGNAL | WAIT |
REVERT | END, RUN |
Programmsteuerung | |
DELAY | |
STOP | |
EXIT ' | |
1/0 ,-Befehle | |
OPEN FILE, DIRECT, SEQUENTIAL,
BUFFERED, UNBUFFERED, STREAM
303816/0 869
1/0 -Befehle (Fortsetzung)
OPEN (Fortsetzung)
CLOSE UNLOCK LOCATE
GET
UPDATE PUT
GENERATE RECORD, INPUT, OUTPUT, KEYED, EXLUSIVE, BACKWARDS, TITLE,
PRINT, LINESIZE, PAGESIZE.
LOCK, REWIND
FILE, SET, KEYFROM, FIND, REWIND BACKSPACE.
READ, FILE, INTO, SET, IGNORE, KEY, KEYTO, COPY, SKIP, LIST, EVENT, NOLOCK, NAMELIST,
ADVACING, REWIND, RECORD, INVALID, FILE, KEY, EVENT, DELETE, REWRITE FROM.
WRITE, FILE, PAGE, SKIP, LINE, DATA, EDIT, LIST, FROM, KEYFROM, EVENT, ADVANCING, PUNCH, PRINT.
INITIATE, TERMINATE, REPORT.
Problemausführung
ASSIGMENT
DO
GO TO ALTER IF
MOVE EXAMINE (Element, Anordnung, Struktur) COMPUTE,
ADD, SUBT., MULT., DIV., BY NAME, ROUNDED, ON SIZE ERROR, GIVING, INTO FROM, CORRESPONDING.
WHILE, TO, BY, PERFORM, UNTIL, TIMES, THRU, VARYNG, FROM, AFTER, FOR,
DEPENDING ON
TO PROCEED TO, ASSIGN.
THEN, ELSE, IS NOT, NUMERINC, ALPHABETIC, POSITIVE, ZERO, NEGATIVE, NEXT SENTENCE
GET, PUT, CORRESPONDING.
REPLACING, TALLYING, ALL, LEADING, UNTIL, FIRST.
309816/0869
TRANSFORM CHARACTERS, FROM0 TO,
CONCATENATE SEPARATE CONTINUE
CALL TASK, EVEMT, PRIORITY, ENTER9 LINKAGE
RETURN
Operatoren; Um die Spezifikation zu treffen, dag IL-I eine unabhängige Ursprungssprache sei, muß die IL
alle Funktionen beschreiben, die mit irgend einer der Ursprungssprachen beschrieben werden können,, die vonpraktischem
Interesse sind. Eine solche Aufgabe kann hoffnungslos Schwierig
sein und einen übermäßig großen Compiler zur Folge haben, wenn jede Ursprungssprachen-Eigenschaft von jeder Sprache als getrennte
Funktion behandelt wird. Es ist also wichtigs die
Eigenschaften der Ursprungssprachen zu analysieren^ um festzustellen, welche Funktionen tatsächlich von Bedeutung sind.
Die meisten Elementarfunktionen beinhalten bei Operanden auszuführende Elementaroperationen«, Diese Aktionen
werden durch Operatoren bestimmt. Für die IL9 die sprachunabhängig
sein soll, muß der 6.C. -Satz von Operatoren die Operatorsätze der verschiedenen interessierenden Ursprungssprachen umfassen. Vom praktischen Standpunkt her gesehen
sind bei der Entwicklung des G„C drei Ursprungssprachen zu
berücksichtigen, nämlich COBOL, FORTRAN IV9 und PL/1. Verfeinerungen,
beispielsweise der Zusatz eines besonderen Operators von irgend einer anderen Ursprungssprache9 können
leicht vorgenommen werden.
Zusätzlich zu den konventionellen Operatoren von
der obengenannten Ursprungssprache., weiche bei den Daten
vorzunehmende Aktionen festlegen., sind noch in IL benötigte
Begrenzer vorgesehen. Sie werden als Operatoren (Steueroperatoren) angesehen, da sie die auszuführende Aktion bestimmen.
Die Liste der Operatoren in dem GC enthalt drei neue Operatoren, die zur Implementation von It aufgestellt wurden. Hier handelt es sich um die Prefix-Operatoren:
,A., .1., und .0.« Alle diese Operatoren sind auf die
Adressen der betreffenden Daten bezogen. Der erste Operator, .A., spezifiziert die Operation zur Bestimmung der Adresse
des zugehörenden Operanden. Der Operator ,1. bestimmt die
Verwendung des Operandenwertes als die Adresse der gewünschten Daten. Der dritte Operator, .0., bestimmt, daß die Operandenadresse eine Offsetadresse ist, zu welcher eine Basisadresse
hinzuzufügen ist. . _
daß Mit diesen neuen Operatoren ist es möglich, "]Hie
Anzahl der Ursprungssprachen-Funktionen, welche ohne bestimmte Routinen einfach und deutlich geschrieben werden
können, beträchtlich vergrößert wird. Beispielsweise hat PL/1 die "Zeiger"- und MOffset"-Eigenschaften, welche als
spezielle Datentypen klassifiziert sind. Die IL-Adressenoperatoren können diese durch den Ausdruckübersetzer bzw.
Expression Processor klar spezifizieren und verarbeiten, indem die Adresse als eine Funktion von regulären Daten behandelt
wird. In gleicher Weise ergeben Listen von verarbeitenden Ursprungsprachen verknüpfte Liste, welche bei Verwendung
Adressenoperatoren leicht in IL Übersetzt werden können.
Tabelle 4 zeigt eine Liste von Operatoren in IL und die Vorrangigkeitsverhältnisse. In der gleichen Vorrangigkeitsgruppe bildet die Vorrangigkeitsordnung in einem Ausdruck
die Vorrangigkeit in einer zuerst kommenden, zuerst ausgeführten (links nach rechts) Basis. Als Ausnahme von dieser
Regel wird die Vorrangigkeits-Stufengruppe 2, die Prefix-Operatoren, in einer rechts nach links Ordnung verarbeitet.
30931 6/0869
Tabelle IL-Operatoren und Vοrrang
Vorrang Stufe
ο
go
σ>
1 2
'3 4 5 6 7
10 11
EOE )
.0.
+ Prefix -Prefix .nicht, "j .A.
.und. .oder.
( FN (Funktionscode) SB (Subscrip-
tionscode)
STEUERUNG & OFFSET EXPONENTAL PREFIX
ARITHMETIK ARITHMETIK VERKETTUNG RELATIONAL BIT-FOLGE "UND" BIT-FOLGE "ODER" logisches "UND"
logisches "ODER" STEUERUNG
EOE ( ) .0. ,FN SB} Sie sind nicht ein Teil des Ausgangscodes.
werden alle'als Steueropratoren angesehen.
Operanden: sind die Symboltabellen-Adressen
der Bezeichner in dem Anwenderprogramm. Bezeichner, welches die Namen von Ausdrücken sind, werden In der Symboltabelle
in einem getrennten Bereich gehalten, so daß der Ausdruckübersetzer mit einem minimalsten Aufwand innerhalb der Ausdrücke
spezielle Ausdrücke erkennen kann.
Ausdrücke: Ausdrücke in IL-1-Format, der Eingang
zu dem Prablemtransformationsmodul, sind einfache, nahezu
1-zu-l Transformationen von Ursprungssprachenausdrücken.
Operandennamen werden durch die Symboltabellenadressen der Namen ersetzt. Operatorcodes der Ursprungssprache werden durch
äquivalente Operatorcodes in IL ersetzt. Um eine Duplizierung der Sprachübersetzungsaufgabe bei der Symbolerkennung in dem
Problemtransformationsmodul 12 zu vermeiden, 1st die Ausdrucksstruktur so ausgebildet, daß jedes ungeradezahlige Wort in
einem Ausdruck ein Operand und jedes geradzahlige Wort ein Operator ist. Zur Ausführung dieses Formats fügt der Ursprungssprachenübersetzer einen besonderen Code hinzu, welcher
bedeutet "no Operand", wenn immer dies erforderlich ist (vorangehend dem ersten Operator oder zwischen zwei aufeinanderfolgenden Operatoren).
Für den Fall, daß die Vorrangigkeit der Operationen
in einer Ursprungssprache von den an die IL angepaßten Vorrangigkeitskonventionen abweicht, muß der Ursprungssprachenübersetzer fur jene Sprache in der erforderlichen Weise runde
Klammern in die Ursprungssprachenausdrücke einfügen, während in die IL übersetzt wird, es sei denn, in dem GC sind Maßnahmen vorhanden, um eine Anwenderdefinition bezüglich der
Vorrangigkeitsregeln zu akzeptieren.
Argumente: die Argumente in IL-I repräsentieren
den Informationsgehalt von ausführbaren Anweisungen in dem Anwenderprogramm. Insofern als IL dem Programmlerer außer
während des Schreibens des Compilers nicht vorliegt, wurde die meiste der in Ursprungssprachen Üblichen Redundanz entfernt.
303816/0369
Ein Argument kann ein einziger Wert sein, beispielsweise
ein DO-Schleifenparameter, oder ein Ausdruck, beispielsweise
der Ausdruck rechts des Gleichheitszeichens in einer Zuordnungsanweisung
oder ein Ausdruck, welcher den Wert eines Parameters repräsentiert.
EOE; EOE ist der Symbolname, der zur Darstellung des internen Codes verwendet wird, der in IL-I zum Deliminieren
bzw. Trennen von Ausdrucken und Argumenten dient. Der verwendete Code ist einer der Codes, die nicht zur Zuordnung
von Zeichenrepräsentationen entweder im ASCII-EBCDIC-Code
verwendet werden. Dieser Code dient zum Hochspringen des Kellerungsstapels des Ausdruckübersetzers auf die nächste
Stufe am Ende der Verarbeitung eines Ausdruckes und zum Vorrücken des Anweisungsverarbeitungs-Programms zum nächsten
Argument am/der Compilung eines Arguments. __., ,_
Anweisungen: ausführbare Anweisungen in einer Ursprungssprache bestimmen das Aufzeichnen bzw. die Transformationen,
welche an Daten während der Ausführung des Anwenderprogramms vorzunehmen sind. Diese Transformationen sind
Funktionen, welche von der Ursprungssprache unabhängig sind, in welcher die Funktion spezifiziert ist. Der Ursprungssprachenübersetzer
10 transformiert die funktionellen Werte und Ausdrücke der Ursprungssprachenanweisung in· die betreffenden
Argumente einer IL-1-Anweisung. Die Argumente in einer IL-1-Anweisung sind die Werte oder Ausdrücke, die von
dem Problemtransformationsmodul 12 zu verarbeiten sind.
Beispielsweise spezifiziert die Ursprungssprachenanweisung "Go To 101" die unkonditionale Zweigfunktion in
FORTRAN. Bei einigen anderen Ursprungssprachen kann das Schlüsselwort "Branch To" P. (oder irgend ein anderes Symbol) sein,
ohne, daß dadurch die auszuführende Funktion beeinflußt wird.
In gleicher Weise kann der Identifizierer bzw. Bezeichner ein alphanumerischer Name oder ein Ausdruck sein, ohne daß
die Funktion verändert wird.
309816/0869
Einige komplizierte Funktionen* die durch einen
Satz zum Ausdruck gebracht werden können, werden jeweils durch einen der Vielzahl von verschiedenen Sätzen von Argumenten
in gleicher Weise sptzifiz4ert. Beispielsweise kann der Test
zur Fortführung der Iteration in einer DO-Schleife spezifiziert
werden als das obere Limit der Schleifenvariablen oder es kann spezifiziert werden als ein Test eines logischen Ausdruckes, in welchem Falle die Iteration bzw. Wiederholung
so lange fortgeführt wird, wie der Wert des logischen Ausdruckes "wahr" ist. Es scheint praktischer zu sein, diese Situtationsart in IL-I dadurch zu handhaben, daß man flir jedes Argument
einer jeden Alternative Argumentpositionen in der IL-I-Anweisung vorsieht, anstatt eine kompliziertere Sprachübersetzung von einer Ursprungssprache zu verwenden. Der Problemtransformationsmodul 12 erkennt jede Argumentposition durch
den EOE-Code, welcher selbst für Argumentpositionen vorhanden ist, welche kein Argument haben. Fehlerermittlungslogik
wird dazu verwendet, das Vorhandensein eines geeigneten Satzes von Argumenten sicherzustellen. Die Tabellen 5(a) und 5(b)
sind Beispiele von in FORTRAN und COBOL geschriebenen Ursprungssprachen-Iterationsanweisunrgen, die 1n einer neu entwickelten Metasprache ausgedrückt sind, welche nachfolgend
noch beschrieben wird. Fig. 6 zeigt die PL-1-Ursprungssprachen-Iterationsanweisung in der Metasprachenaufzeichnung, während
Tabelle 7 ebenfalls in Metasprachenaufzeichnung die einzelne, verallgemeinerte, erste Zwischensprachen (IL-1)-Iterationsanweisung zeigt, in welche jede der FORTRAN-, COBOL- und PL/1-Anweisungen der Tabellen 5 und 6 gebracht wurde.
Tabellen 8(a) und 8(b) zeigen, wie die Iterationsanweisungen von FORTRAN und COBOL in diese einfache IL-I-Anweisung in Metasprachenaufzeichnung passen.
309816/0869
FQRTRAN-1 terati* ons anwei sun gen , geschrieben
in einer neuen Metasprache
lstmtl
DO astmt2
ilO
kipl/ (kip2
IpI V |1P2
, k i ρ 3
,1p3
lstmt3
DO a
stmt4
ill
kip5
Mip5
Mip5
fkip6 ,ip6
lstmt5
lstmt4 lstmt2
DO a
stmt6
i 12
kip7) fkip8
1ρ7Λ·) ip8
1ρ7Λ·) ip8
,kip9 ,ip9
ausführbare Programmanweisungen
309816/0869
C OB OL-1 te rat ions anweisung^ n, geschrieben
in neuer Metasprache
PERFORM a
procl
THRU a
proc2 kiplOJ
iplO
iplO
TIMES
PERF0RM aprocl |THRU aproc2
UNTIL El.
PERFORM a
procl
iknl/ nv Un2(
BY ;vn5
(kn4)
THRU a
proc2l
UNTIL El
UNTIL E2,
UNTIL El.
PL-1-Iterationsanweisungen, geschrieben
in einer neuen Metasprache
DO vnl ■ mnl
TO mn2;
a2: END [al] ;
DO ;
a2: END (al] ;
30981 6/0869
al; DO WHILE NOT El1 ;
a2; END Tal] ;
al; DO vnl = mnl [TO mn2 [BY
[WHILE NOT El
a2; END [al ] ;
IL-1-Iterationsanweisungen, geschrieben
in einer neuen Metasprache
DO el al a2 vnl mnl mn2 mn3 [ a3 a4 vn2 tnn4 mn5 mn6 El2
Γ a5 a6 vn3 mn7 mn8 mn9 El3
Wo: el falls Null, Test vor Iteration (Wiederholung).
Falls Eins, wiederholen vor dem Prüfen.
al, a2, a3,l sind Anweisungsfolgenummern, die durch den
a4, a5, a6,\ Ursprungssprachenübersetzer oder die Symbol- . tabellenadressen von Anweisung, Paragraph oder
Abschnittkennzeichen zugeordnet werden. Wenn al, a3, a5 Paragraphen oder Abschnitte spezifizieren, dann sind a2, a4 und a6 Leerstellen.
vnl, vn2, bezeichnen DO-Schleifenvariable
vn3
mnl,mn4, Anfangswerte von DÖ-Schleifenvariablen
mn2,mn5, ßegrenzungswerte von DO-Schleifenvariablen
mn8
309816/0863
mn 3,mn 6,mn 9
El1,El
Tabelle 7 (Fortsetzung)
der Wert, durch welchen die DO-Schleifenvariablen nach jeder Wiederholung erhöht
(oder erniedrigt, falls negativ) werden.
logische Ausdrücke, welche vor jeder Wiederholung getestet werden. Wiederholung wird
fortgesetzt, bis der Ausdruck "wahr" ist.
Ursprung | MAPS | Ursprung | Tabelle 8 | (a | th | ( | Iteration) | |
FORTRAN | Wiederhol | ung | th | |||||
MAPS | astmt - i | |||||||
kipl thru kip9 | IL- | 1 | ||||||
ipl thru ip9 | ||||||||
ilO | a-i | 8 ( | ru | mn9 | ||||
ill | mnl | ru | mn9 | |||||
il2 | mnl | λ | ||||||
vnl | ||||||||
vn2 | ||||||||
vn3 | b) | Wiederholung | ||||||
Tabelle | ||||||||
IL- |
dprocl
aproc2 kiplO
i PlO
vn4 vn5 vn6 vn7 vn8 vn9
al
a2
(mnl = (mn2 = |
1 kiplO |
fmnl = [mn2 = |
1 iplO |
mnl | |
mn 3 | |
mn4 | |
mn6 | |
mn7 | |
mn9 |
309816/0869
IL-2 Format
Der Ausgang des Problemtransformationsmodul 12 besteht aus ausführbaren Instruktionen in IL-2«, Ungleich
IL-I, welches eine höhere Sprache ist, befindet sich IL-2 auf Maschinenoperationsstufe, was bedeutet, daß die übersetzung
in einen besonderen Maschinencode von IL-2 her annähernd eine eins-zu-eins übersetzung ist. Der Problemtransformationsmodul
12 transformiert jede Anweisung vom IL-1-Format in eine Folge von Instruktionen,von welchen
jede aus einem Makroruf oder einem Operationscodejund dem
oder beiden in diesem Programm vorhandenen Operanden besteht. Tabelle 8 (c) ist ein Beispiel des IL-2 Gerüstes,
von welchem die IL-2 Instruktionsfolge durch den universellen Compiler erzeugt wird, entsprechend der in Tabelle
8(d) angegebenen Aufgabenfolge nach der Aufzeichnung der IL-1-Anweisung von Tabelle 7. ..
IL-2-Instruktionsfolgetabelle für
Wiederhοlungs anweisung (Code-Gerust)
STMT | STMT | INSTRUKTION | GO | GO | TO a2 |
NR | ADRESSE | vnl = mnl | GO | GO | TO a2 |
1 | vn2 = mn4 | AND | AND | mn3^ 0 OR | |
2 | vn3 = mn7 | vnl<mn2 AND | vn2<mn5 AND | mn3^-0 GO TO a2 | |
3 | GO TO a7 | CONTINUE | |||
4 | CONTINUE | IF vn2 7mn5 | TO a4 | ||
5 | al | IF vnl ;*mn2 | IF vn2< mn5 | TO a4 | |
6 | IF vnl <mn2 | IF vn2>mn5 | mn6/» 0 OR | ||
7 | IF vnl >mn2 | mn6> 0 GO TO a4 | |||
8"> | |||||
9 | a3 | ||||
10 | |||||
11 | |||||
12 | |||||
303816/68-69
STMT STMT
13 a5 CONTINUE
14 IF vn3> mn8 GO TO a6
15 IF vn3> mn8 GO TO a6
16 TF vn3> ipn8 AND φπ9^ 0 OR
vn3<mn8 AND mn9 < O GO TO a6
17 IF El1 GO TO a2
18 IF El2 GO TO a4
19 IF El3 GO TO a6
20 a7 CONTINUE
21 <Anweisungen, die zu wiederholen
sind von a5 bis a6>
22 vn3 = vn3 + mn9
23 GO TO a5
24 a6 CONTINUE
25 <Anweisungen, die zu wiederholen
sind von a3 bis a4>
26 vn2 m vn2 + mn6
27 GO TO a3
28 a4 CONTINUE
29 ζ Anweisungen, die zu wiederholen
sind von al bis a2)
30 vnl a vnl + ran3
31 GO TO al
32 a2
Tabelle 8(d) zeigt die von dem universellen Compiler
GC-Il ausgeführten Aufgaben mit Bezug auf die Aufzeichnung der IL-1-Wiederholungsanweisung von Tabelle 7.
309816/0869
Aufgaben des universellen Compilers -
(Die Anweisungsnummern beziehen sich auf die Anweisungen in
der IL-2-Instruktionsfolgetabelle)
Aufgabe
1. <Wenn al frei ist9 Gehen nach Aufgabe 30 (Fehleraysgang)>
2. <Wenn a2 frei ist, so ist al die Symboltabe!le'fiadresse
der zu wiederholenden Prozedur Beachten des a2~Feldes
in dem Symboltabellemwort für diese Prozedur,, Setzen
des Codes zum Rufen dieser Prozedur (nicht dargestellt in der IL-2-Instruktionsfo]ge)e>
3. <Wenn a2 vorhanden ist9 AufsycSien in der Symbol tabelle»
um festzustellen, ob a2 eine Prozedur isto Falls dies
der Fall ist, so ist die als a2 spezifizierte Prozeduradresse
durch das a2-Feld ie dem Syiaboltabellenwort
für diese Prozedur zu ersetzen« Ayfsuchen des Codesβ
um diese Prozeduren zu rufem (in der IL-2~Instruktions-folge
nicht gezeigt),, >
4. ^FaIIs mnl frei und mnZ spezifiziert ISt59 Zuordnen eines
Wertes von 1 zu ranl.>
5» <Falls a3 frei ist, a3 gleich al setzen., a4 gleich a2s,
und lösche Anweisungen 9, 259 2J9 28O>
6. <Falls a5 frei ist, a5 gleich a3 setzen0 a6 gleich a4
und Löschen der Anweisungen 13„ 2I9 239 24e?
7. ^FaIIs mn2 und mn3 beide frei sind9 Löschen der Anweisungen
1, 2, 3, 4, 5, 6, 7, S9 9, 1O8 H9 129 IS9 14, 15, 16,
17, 18, 19, 20, 22, 26, 30, 31 und Gehen nach Aufgabe Dies ist eine einfache Wiederholung,, ungeachtet, ob El1
spezifiziert ist,>
8. -iFalls el null ist, Löschen der Anweisungen 49 20o>
9. <Falls El1 frei ist, Löschen der Anweisungen 17, 18 und
und Gehen auf Aufgabe lle>
10. <Falls mnl frei ist, Löschen der Anweisungen 18, 19.>
11. CFalls mnl frei ist, Löschen der Anweisungen 1, 2, 3, 6,
7, 8, 10, 11, 12, 14, 15, 22, 26, 30 und Gehen nach Aufgabe 29„>
0KI. 1972 309816/0869
12. (Falls mn3 frei ist, Dazuordnen des Wertes 1.)
13. (Falls mn3 ein positives Literal ist, Löschen der
14. (Falls mn3 ein negatives Literal ist, Löschen der
15. (Löschen der Anweisungen 6 und 7. )
16. (Falls El2 frei ist, Löschen der Anweisungen 18, 19 und
17. (Falls mn4 frei ist, Löschen der Anweisung 19.)
18. (Falls mn4 frei ist, Löschen der Anweisungen 2, 3, 10, 11,
12, 14, 15, 16, 22, 26 und Gehen nach Aufgabe 29.)
19. (Falls mn6 frei ist, Dazuordnen des Wertes 1.)
20. (Falls mn6 ein positives Literal ist, Löschen der Anweisungen 11 und 12 und Gehen nach Aufgabe 23.)
21. <Fal1s mn6 ein negatives Literal ist, Löschen der
22. (Löschen der Anweisungen 11 und 12.}
23. (Falls El3 frei ist, Löschen der Anweisung 19.7
24. (Falls mn7 frei ist, Löschen der Anweisungen 3, 14, 15,
16, 22 und Gehen nach Aufgabe 29.}
25. (Falls mn9 frei ist, Hinzuordnen des Wertes 1.)
26. (Falls nn9 ein positives Literal ist, Löschen der
27. (Falls mn9 ein negatives Literal ist, Löschen der Anweisungen 14 und 16 und Gehen nach Aufgabe 29.)
28. (Löschen der Anweisungen 14 und 15.)
29. (Erzeugen einer IL-2-Ausgangscodefolge für die nicht-
gelöschten Anweisungen.\
30. (Fehlerausgang.)
Allgemeine Charakteristiken der Zwischensprache
In Tabelle 9 sind die Charakteristiken der IL(Zwischenspräche)
aufgeführt.
tin!. 19/2
3 09816/0869
Tabelle 9
Charakteristiken der Zwischensprache
1. Sie ist ursprungssprachenunabhängig»
2o Der Eingang, IL-I, ist funktionsorientiert«,
3. Ausführbare Eingangsanweisungena in IL-I9 liegen in einem
höherstufigen Sprachformat vor«
4. Es sind keine Datendeklarationsanweisungeo vorhanden«, Alle
Datennamen und Attribute sind in einer Symboltabelle«,
5„ Alle nichtexplizit definierten Datennamen nehmen automatisch
Ergänzungsattribute ana
6« Alle Namen (Operanden) sind Symboltabel]enadressen0
7. Operatorcodes und Punktuationscodes reichen zur Beschreibung
aller allgemein verwendeten Ursprungssprachenoperationen aus.
8« Jede ausführbare Eingangsanweisung bspnnt mit einem
Standardschlüsselwort für die auszuführende Funktion,,
9. Sie ist vom Objektcomputer unabhängig»
10. Der Ausgang, IL-2, ist compiSsroperatioiisorientierto
11.- IL-2-Ausgangscode weist die Maschinenoperationsstufe
bzw.· Machinenoperationsniveau auf.
Die Tabellen 59 69 7 und 8 stellen ein Beispiel der Trans«
tSi^a 1WVwT^hdhWg von IL ·*ί*@Η4»»#®*«ϊ--^^ daro Die
Tabellen 5 und 6 zeigen verschiedene Ursprungssprachenanweisungen in FORTRAN, COBOL und PL-I zur Bestimmung der Wiederholungsfunktion. Tabelle 7 zeigt das IL-1-Format, welches irgendeine
der verschiedenen Ursprungsanweisungen repräsentieren kann*· die in den Tabellen 5 und β gezeigt sind»
Mit anderen Worten, eine übliche Wiederholungsfunktion
kann durch eine FQRTRAN-"DO"-Sch!eife oder eine CQBOL-"PERFQRM"-Anweisung
oder eine "DO---END"-Gruppe von PL/1 spezifiziert
werden. Demzufolge kann jede der obengenannten Ursprungssprachenformate für die Wiederholung leicht durch SLT 10 in ein einziges
Format, IL-I, übersetzt und dann diese standardisierte Anweisung
durch einen universellen Compiler GC-Ii verarbeitet werden« Dieser
universelle Compiler GC-Il 'kann als ein Modul ausgeführt sein,
30981 6/0869
22A9852
beispielsweise als die ALU des Hostcomputers, oder er kann als ein Teil der peripheren Einrichtung oder als ein Satz
von Unterprogrammen ausgeführt sein. Eine solche Konstruktion kann auf wirtschaftliche Weise in Hardware ausgeführt sein,
da der gleiche Compiler ein sehr weites Anwendungsgebiet auf viele Computer und viele Ursprungssprachen aufweist. In diesem
Beispiel für die Wiederholung ist das Zwischensprachen-Eingangsformat, IL-I, an dem Eingang zu dem GC-Il in Tabelle 7 dargestelIt.
Wobei: Die Buchstaben definieren Scheinvariable,
die zu ersetzen sind durch den Definitionsumfang, Indexmerkmale,
Indexberechgrenzen, Inkrements und Konditionen. Der Ausgang des GC-Il ist IL-2 und besteht aus Maschinenstufe-Instruktionen
(z.B. Vergleich, Inkrement, Zweig und Test), die in der richtigen Folge und an den richtigen Stellen in
den Text des Problemprogrammes eingefügt sind. Obwohl der Ausgang Maschinencodeniveau aufweist, ist er funktionsorientiert
und maschinenunabhängig,, Die übersetzung dieses
Ausganges in einen bestimmten Maschinencode ist in den meisten Fällen eine einfache Aufgabe des Tabellenaufsuchens.
Tabelle 8 zeigt die IL-2-Ausgangsinstruktionen, in welche
die IL-1-Anweisung von Tabelle 7 während der Problemtransformation
umgewandelt wurden. Außerdem kann das Compilersystem in der benötigten Weise Instruktionen hinzufügen, um die
Inhalte der Indexregister zwischenzuspeiehern und wiederherzustellen,
sowi e andere unterstützende Vorgänge.
Vorteile des Computersystems, bei welchem das Konzept des universellen Compilers Anwendung findet
Die Vorteile dieses Computersystems bestehen hauptsächlich in dem Ergebnis, das sich durch die Organisation de;
Arbeit in unabhängige, dezentralisierte Funktionen und in der
Trennung dieser Funktionen ergibt. Als Folge hiervon resultieren' die zunächst kurz angesprochenen und dann im einzelnen erörterten
VorteiIe,
309816/0869
«Γ
Vorteile:
i* Die Compiler-Entwicklungskosten sind geringer, da der
Compiler einen größeren Anwendungsbereich aufweist, was
ein wirtschaftlicheres Volumen zur Folge hat.
2. Die Compilerentwicklung kann optimiert und durch Wiederholungen
des anfängliches Entwurfes verfeinert werden» da die breitere Verwendung und längere Lebenszeit selbst
durch eine kleine Verbesserung einen ausreichenden Einkommensgewinn
bewirkt.
3. Der Compiler ist einfach zu entwickeln und Fehler bzw» Störungen können leichter beseitigt werden, da er in
unabhängige dezentralisierte Moduls aufgeteilt ist.
4. Die Compile-Zeit kann durch Implementierung des Entwurfs
in Hardware-Firmware beträchtlich verkürzt werden»
5. Die Komplexheit des Betriebssystems kann verringert werden, da vom Compiler her an das System weniger Anforderungen
gestellt werden.
ββ Die Entwicklung der Ursprungssprache ist vereinfacht.
7. Bessere Spracheigenschaften ermöglichen eine größere Programmoptimierung durch den Programmierer.
8. Kompatibel mit der Entwicklung von üblichen Datenbasis-Systemen
und anderen beiannten Piekten, welche die
Compilerentwicklungsspezifikationen radikal ändern können«,
Kosten: Die gegenwärtige Compiler-Entwicklungsmethode erfordert
für jede Ursprungssprache-ZMaschinenkombination jeweils eine
getrennte, für sich eigenartige Compilerentwicklung» Jeder Compiler hat eine nur verhältnismäßig kleine Änwendungsmöglichkeit
und eine kurze Lebenszeit» Im Vergleich hierzu kann ein großer Teil eines universellen Compilers ohne Änderung
in Verbindung mit einer Vielzahl von Ursprungssprachen und verschieden hergestellten und aufgebauten Computern verwendet
werden. Demzufolge verteilen sich die Entwicklungskosten auf eine große Anzahl von Einheiten, so daß sie anteilmäßig nur
gering sind.
Compilarverbesserungen: Infolge der Komplexität der bekannten
Compiler und ihren begrenzten Anwendungsmöglichkeiten9 lassen
3 0 9816/0869
die Entwicklungsanstrengungen normalerweise nach, wenn die
Compilerentwicklung getestet wurde. Änderungen steht man stark abweisend gegenüber, da man das Auftreten von unerwarteten
neuen Problemen fürchtet. Außerdem ist eine Neuentwicklung zur Überwindung von während des Betriebes festgestellten Nachteilen
nicht gerechtfertigt, da die potentielle Verbesserung nur einer verhältnismäßig kleinen Gruppe von Anwendern zum Vorteil gereicht
Im Vergleich hierzu sind ausführliche Analysen des Problemtransformationsmoduls des universellen Computers während der Anwendung
voll gerechtfertigt, da es Standardfunktionen ausführt, die allen Compilern gemeinsam sind und sich der daraus ergebende
Gewinn sehr weitreichend auswirkt.
Einfachheit: Das Konzept der Trennung der -unabhängigen
Parameter der Sprachübersetzung und der Problemtransformation in getrennte Module bewirkt tatsachlich eine Dezentralisierung
dir Steuerung von einer komplizierten Steuerung und Flußfolgen 1n drei unabhängige einfache Aufgaben. Hierdurch ergibt sich,
daß Konstruktionseinzelheiten nicht den gesamten Compiler beeinträchtigen, sondern eindeutig begrenzt sind. Hierdurch
wird die Konstruktion bzw. Entwicklung und das Beseitigen
von Störungen bzw. Fehlern einfacher und leichter.
Geschwindigkeit: Da der Problemtransformationsmodul sowohl
von Ursprungssprachen'als auch vom Objektcomputer unabhängig
1st, kann er in Verbindung mit vielen Ursprungssprachen und vielen Computern verwendet werden. Er ändert sich nicht, auch
wenn in der Ursprungssprache oder in den Computermaschinencodes Änderungen auftreten.
Demzufolge kann diese Einheit in Hardware-Firmware
ausgeführt werden, wobei sich eine enorme Geschwindigkeitssteigerung um mehrere Größenordnungen ergibt. Dieser Teil
der Compileraufgabe kann bei nahezu Maschinenzyklusgeschwindigkeiten ausgeführt werden.
Reduzierte überwachung: Die Kompliziertheit des Betriebssystems
und die daraus resultierende Zeit, die vom Computer für die
30981 6/0869
Betriebssystemaufgaben (nichtproduktive Ausgaben) aufgewendet
werden müssen, entwickeln sich zu dringenden Problemen. Da die Sprachen umfangreicher werden, werden die Compiler
größer und erfordern einen größeren Betriebssystemaufwand für die Planung und das Umschalten auf und von aktiven
Speichern, insbesondere bei Multiprogrammverarbeitung.
, Beim universellen Compiler sind die Sprachübersetzer
(SLT 10 und MCT 14} viel kleiner und demzufolge leichter zu
planen und zu schalten. Das Planen des ALU wird insbesondere dann weitgehend reduziert, wenn der Problemtransformationsmodul in die Hardware eingeschlossen ist. Ferner werden die
Schaltungs- und aktiven Speichererfordernisse verringert. Es ist nunmehr leicht möglich, die gesamte Compileaufgabe in
peripheren Geräten auszuführen, wodurch das Betriebssystem weiter vereinfacht wird,-
Ursprungssρrächeηverbesserungen: Durch den universellen Compiler
ist der Ursprungssprachenübersetzer der einzige Modul, der bei einer Änderung der Ursprungssprache beeinflußt wird. Die Obersetzung in diesem Modul ist nahezu eine eins-zu-eins-öbersetzung
in eine Zwischensprache. Demzufolge sind Ursprungssprachenänderungen, die zur besseren Anpassung der Sprache an den
Benutzer verwendet werden, verhältnismäßig leicht auszuführen.
In gleicher Weise ist die Einwirkung auf den Compiler streckenbegrenzt, was bedeutet, daß das Risiko, daß unerwartet zusätzliche Fehler auftreten, proportional verringert wird.
Bessere Optimierung: Kleine Sprachübersetzer, wie es der
universelle Compiler ist, sind leichter in aktive Speicher zu übertragen und aus diesen herauszuübertragen, wodurch
konsequenterweise die Ursprungsprogrammumschaltung von einer Sprache in eine andere innerhalb eines Programmes praktizierbar wird. Dies gibt dem Programmierer eine größere Freiheit
bei der Optimierung entweder des Aufschreibens oder der Ausführung eines Programnes. Da der Programmierer mehr
weiß als der Compilerentwerfer über den Kontext des zu programmierenden Problems, ist der Programmierer am besten
309816/0869
in der Lage, das Programm global zu optimieren, Lokaloptimierungen werden andererseits am zweckmäßigsten durch den
Compiler vorgenommen.
Reduziertes Verhalten: Da der universelle Compiler in zwei
unabhängige Module unterteilt ist, ist die sich bei einer Änderung ergebende Auswirkung strikt begrenzt. Trotzdem kann
er auch an radikale Änderungen angepaßt werden. So kann beispielsweise die Arbeit, die jetzt durch ein Datenbasismanagement und eine allgemeine Basis für eine Gemeinschaft
von Anwendern vorgenommen wird, zu der Trennung der Compileraufgaben in zwei spezialisierte Compiler führen, von welchen
der eine die Datenattribute und Umgebungsinformationen umwandelt, während der andere die ausführbaren Prozeduren
umwandelt. Der universelle Compiler ist nicht nur kompatibel und an dieses Konzept anpaßbar, sondern kann auch die
Entwicklung beschleunigen.
Von allgemeinen Gesichtspunkten aus gesehen wurde folgendes als zweckmäßig erachtet:
(a) Trennung der Datenattributedekiaration von ausführbaren Anweisungen in eine getrennte Compilerfunktion, um eine
Laufzeit-Symboltabelle oder eine Datenbasis zu erhalten, so daß Datenattribute während der Programmausführung
in Betracht gezogen werden können. Mit anderen Worten, treffe Vorkehrungen in dem Compilevorgang, um die
allgemeine Datenbasis handhaben zu können.
(b) Entwickeln des universellen Compilerkonzepts von IL-I,
so daß für jede Ursprungssprache einfache Obersetzer entworfen werden können.
(c) Entwickeln einer Software-Schreiber-Zwischensprache IL-2,
so daß Betriebssysteme und Compiler unter Verwendung einer Zwischensprache auf einfache Art und Weise geschrieben
und auf Fehler überprüft werden können.
309816/0869
Metasprache entwickelt, mit der die Elemente der verschiedenen
Ursprungssprachen genau definiert werden können. Da eine exakte Definition eines "Problems" die beste Basis für eine
gute "Auflösung" ist, muß eine neue Metasprache da sein, die als Werkzeug zur Organisierung und Vereinfachung von in
komplexen höheren Sprachen vorliegenden Informationen verwendet werden kann. Bekannte Metasprachen können entweder diese
Informationen nicht genau genug spezifizieren oder sie sind nicht in der gewünschten Weise genügend kurz gefaßt. Wenn
die Ursprungssprachenanweisungen nicht definiert und sowohl genau als auch kurz abgefaßt sind, so ist der Informationsinhalt und dadurch auch die Aufzeichnungsanforderungen nicht
kurz und bündig genug. Deshalb wurde es, um aus einer Ursprungssprache eine erste Zwischenspreche (IL-I) zu
entwickeln, die für den Betrieb mit einem universellen Compiler geeignet ist, und zur Entwicklung einer zweiten
Zwischensprachen (IL-2), die für eine leichte Konversion in den Objektnaschinencode für einen bestimmten Computertyp
geeignet ist, als erforderlich angesehen, eine exakte Methode zur Handhabung und Definierung des Informationsgehaltes
aller wichtigen Ursprungssprachen zu entwickeln. Die neue Metasprache ist ein Werkzeug, welches die Erkennung identischer Informationen unter einer Vielzahl von Ursprungssprachen
unterstützt, in dem der Informationsgehalt jeder Ursprungssprachenanweisung systematisch markiert wird, so daß identische
Informationseinheiten von verschiedenen Ursprungssprachen in die gleiche IL-1-Funktion gebracht werden können.
Betrachtet man die Schwierigkeiten bei der Maschdnenkommunikation zwischen Ursprungssprachen (z.B. COBOL und FORTRAN)
und Software-Schreibern, so ist ersichtlich, daß zwischen diesen beiden Elementen eine Art Kommunikationsverknüpfung erforderlich
ist.
Die Metasprache, welche hier «+» die zur Definierung
von Elementen in den Ursprungssprachen entwickelte Aufzeichnung darstellt, ist die Kommunikationsverknüpfung zwischen der
309816/0860
betreffenden Person (dem Software-Schreiber) und der Maschine (die Ursprungssprache). Möglicherweise besteht die
Hauptursache des chronischen Mangels an Software, die jeweils rechtzeitig bereit gestellt werden sollte und nach Spezifikationen zu handhaben ist, in der Eile, mit der die Softwareleute an die Arbeit des endgültigen Produktes gehen, während
die Wichtigkeit der Entwicklung von guten Werkzeugen für die betreffende Arbeit ignoriert wird. Solche gute Werkzeuge wären
hauptsächlich eine gute Schreibweise (Metasprache) und gute Dokumentation. Viele schlechte Softwareentwicklungen sind das
direkte ERgebnis des Fehlers, da0 zur Handhabung der Ursprungssprachen eine mangelhafte Schreibweise oder ungenügende
Werkzeuge gebraucht werden.
Ungenaue oder schlechte Schreibweise hat nicht nur eine schlechte Klärung der Bedürfnisse zur Folge, sondern
ruft auch Mißverständnisse über die Kompliziertheit und relativeBedeutung von verschiedenen Komponenten der zu erledigenden Aufgabe hervor. So sind also schlechte Arbeitsprogramme
oft das Ergebnis einer schlechten Komunikation und schlechte Komunikation ist sehr häufig das Ergebnis einer schlechten
Schreibweise (schlechte Metasprache). Demzufolge ist eine gute Schreibweise extrem wichtig für die Einsicht und das
gute Verständniss des Softwareentwicklers.
Eine Metasprache sollte, um ein genaues und nützliches Werkzeug zu sein, derart entworfen werden, daß es eine
Sprache bei jeder Hierarchiestufe in der jeweils nächst niedrigeren Hierarchiestufe genau beschreibt. Dies ist erforderlich, um in den Kontext des Problems Einsicht zu erhalten, indem man das Sätti gungs-"Geräusch" von niedrigeren
Stufen in dtr Hierarchie eliminiert.
nur i7)
309816/0869
Die Erkennung des Informationsgehaltes der
Anweisungen in den Ursprungssprachen ist von großer Bedeutung, damit die Zwischensprache (IL) den vollständigen
Informationsgehalt wiedergibt und damit identische Informationsinhalte von verschiedenen Ursprungssprache als solche
erkannt und ohne Überfluß an Worten in die gleiche Zwischenspracheanweisung gebracht werden kann.
Eine der gegenwärtig zur Beschreibung von Computersprachen allgemein verwendeten Metasprachen wird Backus
Normal Form, BNF, genannt. Obwohl es den einfachen Ausdrücken
wegen als nützlich erscheint, ist die Verwendung von BNF zur Beschreibung von komplexen höheren Sprachen nicht praktikabel.
In BNF wird ein Paar von<_ >zur Begrenzung eines jeden
Gattungsausdruckes verwendet, und außerdem wird normalerweise jeder dieser Ausdrücke durch ein vollständiges Wort wiedergegeben. Dies führt zu verworrenen Aufzeichnungsanhäufigen
und übermäßiger Wortmacherei. Die Struktur des verwendeten
Wortes gibt keinen Hinweis auf die Menge der betreffenden Information. Beispiel:
die Aufzeichnung -jnteger>
ist "größer" als ^term^
obwohl "term" eine viel kleinere Informationseinheit betrifft.
Die Hierarchiestufen der Informationen können also weder
leicht markiert noch identifiziert werden..
Eine genaue Schreibweise kann ein wirksames Werkzeug beim Analysieren von Sprachen zu sein, um tatsächliche
Information zu definieren. Um nützlich zu sein, muß die Metasprache in der Lage sein, die zu analysierende Sprache
genau und kurzgefaßt zu definieren und sie muß außerdem leicht lernbar und anwendbar sein. Die Metasprachensturktur
selbst sollte bei der Übertragung eines Teiles der Information behilflich sein.
Als Spezifikation für eine Metasprache gelten also folgende Erfordernisse:
1. Die Meinung muß unzweideutig sein,
2. sie muß in der Lage sein, höhere Sprachen genau
und kurzgefaßt zu beschreiben,
1 0. ÜKT. 1972 309816/086^
3. sie darf die Informationseinheiten nicht in einer Menge von Einzelheiten begraben,
welche für den Benutzer "Geräusche" bilden,
4. sie muß in der Lage sein Informationen von jeder Hierarchiestufe in Informationseinheiten
der jeweils nächst niedrigeren Hierarchiestufe zu definieren, und
5. sie ist ein nützliches Werkzeug, das Einsicht
in die wahre Natur des zu lösenden Problems gibt.
Neu entwickelte Metaprache(ML)
Die neu entwickelte Metasprache ist ein Satz von Symbolen und Regeln, die das Schreiben von Anweisungen und
Spezifikationen der Syntax und der semantischen Regeln einer Vielzahl von höheren Sprachen, zum Beispiel COBOL, FORTRAN
u.s.w., in genauer und kurzgefaßter Art gestatten. Ferner ist sie so abgefaßt, daß jegliche Aufzeichnungsanhäufungen und
Verwirrungen auf ein Mindestmaß herbgesetzt werden, so daß sie als Werkzeug bei der Analysierung des Informationsgehaltes
von verschiedenen Sprachen verwendet werden kann. Die Struktur der Aufzeichnung selbst gibt Auskunft über (a) die Größe und
(b) die Wichtigkeit der dargestellten Information. Die
Schreibweise ist so gewählt, daß sie leicht zu lernen ist und man sich leicht an sie erinnert. Die Fig. 8 und 9 der
Zeichnungen zeigen Sprachkonzepte, die in Form einer Hierarchie nach Größe und Wichtigkeit aufgestellt sind, wobei eine besondere
Schreibweise zur Differenzierung der Hierarchie und der Bedeutung der Konzepte verwendet wurde.
So dient beispielsweise ein einfacher Kleinbuchstabe
(Eig.9) zur Darstellung einer primitiven Informationseinheit oder eines Elementes (irgend eines aus einem Satz von
gleichen bzw. ähnlichen Elementen). Der einfache Kleinbuchstabe mit einem unterschriebenen oder nachgesetzten Zeichen
bzw. Buchstaben stellt einen Untersatz des durch den Buchstaben
dargestellten Satzes dar. Zwei Haupt-Untersätze aller Infor-
1 0. OKI. 197? 3 0 9 8 16/0869
mationselemente sind "Bezeichner" (Identifizierer) und
"Operatoren"*
Es wird ausdrücklich darauf hingewiesen, daß diese
Metasprachenschreibart mit Bezug auf die Definitionen der Symbole und mit Bezug auf den Definitionsumfang nur ein Beispiel ist«, Andere Symbole und Definitionsumfange können zur
Beschreibung der gleichen genauen Methode zur Aufstellung einer Hierarchie von Konzepten verwendet werden«
Kombinationen oder Reihen von Elementen werden durch einen einzigen Großbuchstaben definiert. Demzufolge ist
entsprechend den Fig. 6 und 8 durch den Großbuchstaben "E" ein Element (irgendeines der Elemente) des Satzes aller Ausdrücke definiert. Untersätze sind durch das Unterschreiben
bzw. Tiefsetzen von Kleinbuchstaben oder Zahlen zu den einfachen Großbuchstaben definiert, wie dies durch M, oder E.
ersichtlich ist,
Untersätze sind auch durch den Großbuchstaben nachgesetzte Kleinbuchstaben definiert«. So ist beispielsweise
"Ein" (Fig. 8) ein Element des Untersatzes, der alle logischen
numerischen Ausdrücke enthält.
Zusätzlich zu den durch die Struktur (je nach dem, ob es sich um einen Klein- oder Großbuchstaben handelt) übertragenen
Informationen sind die den verschiedenen Sätzen zugeordneten Buchstaben so ausgewählt, daß sie leicht zu lernen sind und leicht den
betreffenden Sätzen zugeordnet werden können«, So ist beispielsweise "E" für Ausdrücke, "e" für primitive Elemente, 1V für
Operatoren usw. vorgesehen.
Die ganze obengenannte Schreibweise dient zur Definierung "generischer" Sätze von Informationen. Zur Definierung
eines "bestimmten" Elementes eines beliebigen Satzes werden folgende Regeln angewendet: wenn ein bestimmtes Element definiert ist, wird es als Literal der Metasprache angesehen
und vollständig in Großbuchstaben geschrieben, falls es ein Bezeichner mit zwei oder mehr Buchstaben ist, wie beispielsweise
ein Reservewort. Digits und besondere Ursprungssprachensymbole werden ohne Veränderung oder besondere Schreibweise geschrieben. Alle in einem Literal erscheinenden Ursprungssprachenbuchstaben werden als Großbuchstaben geschrieben.
H. 0KL1972 509016/0868
Da die Metasrpachensymbole nicht gleich sind wie die bei den Ursprungssprachen verwendeten Symbole,
gibt es bei der Unterscheidung der Ursprungssprachensymbole von den Metasprachensymbole keine Schwierigkeiten. Die einzige
Ausnahme bildet das Dreipunkt (...)-Wiederholungssymbol,
welches ein Metasprachensymbol ist. das auch als ein JOVIAL-Sprachsymbol verwendet wird. Da dieses Symbol so zweckmäßig
ist und aber JOVIAL keine allgemein verwendete Sprache darstellt, dürfte es zweckmäßig sein, es durch den tiefgesetzten Ausdruck h(h ) zu ersetzen, wenn die JOVIAL-Repetitions·
aufzeichnung erforderlich ist.
Da die wesentlichen interessierenden Ursprungssprachen keine Kleinbuchstaben aufweisen, .können die Metasprache-Kleinbuchstaben und Kombinationen eines Großbuchstabens mit einem oder mehreren Kleinbuchstaben leicht als
Metasprache erkannt werden. Ursprungssprachenwörter eines Buchstabens oder Zeichens, weiche mit der Großbuchstaben-Metasprachenaufzeichnung (oder dem Repetitionssymbol in
JOVIAL) verwechselt werden können, werden durch den Kleinbuchstaben "h" mit einer Unterzeichnung definiert, welche
aus dem Zeichen besteht, das definiert ist (entweder ein Großbuchstabe oder Digit oder Wiederholungssymbol oder ein
anderes Symbol). Demnach 1st der Ursprungssprachenbuchstabe 11A" (Metasprache-Literal) als "hA" definiert.
Ein Merkmal von BNF, welches in die neue Metasprache
aufgenommen wurde,ist die Verwendung der englischen Sprache, welche in <c_ ^gesetzt ist, um die Sprachanforderungen zu beschreiben. Dies gestattet einen Aufschub bei der Aufstellung
des tatsachlichen Codes für eine Sprache so lange,bis das
alle Spezifikationen bestimmt sind.
Die folgenden Tabellen 10 bis 13 zeigen eine vorläufige Teilzuordnung von Buchstaben des Alphabets zu den
Sätzen und Untersätzen und den Symbolen der Metasprache.
Die nachfolgende Tabelle 10 zeigt die Aufzeichnung
in der Metasprache mit deren Definitionen.
Tabelle 11 liefert die Definition von Kleinbuchstaben Alphabets und Beispiele über die Anwendung in der Metasprache.
1 H ηκτ. WI 309816/0869
1 H ηκτ. WI 309816/0869
Tabelle 12 (a) definiert Informationselementensätze, während Tabelle 12 (b) die Untersätze verschiedener
Bezeichner zeigt.
Tabelle 13 definiert die Untersätze für verschiedene Operatoren.
' Rechteckige Klammern werden zum Einschließen eines Optionsteiles des Formats verwendet.
Geschweifte Klammern bestimmen eine Auswahl unter
den vertikal aufgelisteten Alternativen. Eine
der Alternativen muß jeweils gewählt werden, außer das Ausgewählte ist unterstrichen, was bedeutet,
daß es eine Auswahl durch Ergänzung ist.
Vertikale Striche trennen Alternativen. Verwendet in einfachen Definitionen.
Spitze Klammern enthalten englischsprachige Aus-. drücke, die zur Beschreibung oder Benennung eines
Elements, einer Struktur oder Spezifikation der Ursprungssprache oder der Zwischensprache dienen.
Die Nummer, i, in den spitzen Klammern definiert die laufende Elementnummer der Einheit, u.
Wiederholsymbol, welches festliegt, daß die unmittelbar vorangehende Einheit (Element, Struktur
oder Klammergruppe) aufeinanderfolgend mehrmals auftreten kann.
Metasprachenliteral: Ursprungssprachenwort von
zwei oder mehr Zeichen, wobei alle Buchstaben groß geschrieben werden, oder ein sonstiges
besonderes Ursprungsprogrammsymbol (Zeichen, abweichend von einem Buchstaben oder Digit).
u<O>
ΛΛ · · ·
1 0. OHT. 1972
§0981 β/0869
hx Metasprachenliteral, welches ein Ursprungssprachenzeichen definiert. Es ist durch einen
Kleinbuchstaben, h, definiert, welchem das zu definierende Zeichen tiefgesetzt ist. Falls
das Zeichen ein Buchstabe ist, muß es als Großbuchstaben dargestellt werden. Fall sich nicht
die Möglichkeit einer Verwechslung oder Zweideutigkeit ergibt, können die Ursprungssprachensymbole so geschrieben werden, wie sie auftreten,
ohne unterschreiben eines "h". Die einzige gegenwärtige bekannte Ausnahme ist das Wiederholungssymbol (...), welches ein legales Symbol in der
JOVIAL-Sprache ist. Die Spezifikation dieses Symbols für JOVIAL ergibt sich durch die Verwendung
des unterschriebenaVh" entsprechend (h ).
X Einfache Großbuchstaben: Metasprachenaufzeichnung
für einen Gattungsbegriff, der ein Glied (irgend ein Glied) eines Satzes von MuIti-Element-Informationseinheiten definiert, beispielsweise Anweisungen (definiert durch den Großbuchstaben^)
und Ausdrücke (definiert durch Buchstaben, E).
Kleinbuchstaben gefolgt wird, definiert ein MultiElement-Glied eines Untersatzes des Satzes, der
durch den Großbuchstaben spezifiziert ist. Beispielsweise ist Ein der Gattungsname für
ein Glied des Untersatzes, logischer numerischer Ausdruck.
1 0. UM. 19/2
309816/0869
x Einzelner Kleinbuchstabe: Metasprachenaufzeichnungsart für einen Gattungsbegriff,
der ein Glied eines Satzes von primitiven einzelnen Elementinformationseinheiten definiert, beispielsweise Operateuren (definiert *
durch den Kleinbuchstaben, o) und variable (definiert durch den Kleinbuchstaben, v).
Metasprachen-Gattungsbegriff für ein primitives einzelnes Element, welches ein Glied des Untersatzes
X11 des primitiven Elementsatzes ist,
U . φ . fjj
der durch χ definiert ist. Beispielsweisevo.
der Gattungsbegriff für einen logischen Operator. Der Satz von logischen Operatoren ist ein Untersatz des Satzes aus allen Operatoren, ο. Da
es viele Untersätze von Bezeichnern gibt, sind den Haupt-Untersätzen Buchstaben ohne Unterschreibung bzw. Tiefsetzung hinzugefügt,um
dadurch eine weitere Verringerung der Unordnung zu erhalten/Beispiele sind i für ganze Zahlen,
w für reservierte Wörter und ν für Variable. Diese Buchstaben sind wie oben tiefgesetzt, um
Untersätze zu bilden.
1 0. OKi. 1972
309816/0869
Tabelle 11: Definitionen
Verwendet als Element | Verwendet als | |
Subscript | ||
a | Adressen-Merkmal | nicht-numerisch |
(alphanumerisch) | ||
arithmetisch | ||
adressieren | ||
b | Leerstelle | binar |
C | Steuerungs-Bezeichner | Bedingung |
komplex | ||
d | Datenattribut | dimension |
dezimal (Festpunkt) | ||
e | Element | extern ungepackt |
f | Dateiname | Anzeige |
Prefix | ||
Gleitpunkt | ||
Funktion | ||
g | Gruppe(Alternativ) | |
h | Hollerith (literal) | Hollerith |
hexadezimal | ||
Indexvariable | invers(indirekte | |
(Ganzzahl) | Adresse) | |
Festpunkt | ||
Instruktion | ||
k | Konstante | Bedingungsvariable |
1 | logisch |
Datenelement
Bezeichner, Merkmalsmarke,
Name
Operator
Parameter
numerisch
wahlweise
Offset
Zeiger
Maske
Vergleich
Anweisung
Vorzeichen
na ο
"1
nf
kj, °fn
ch' °h vh' kh
wo
rel ls 'fs
1 O. (IKi. 1972
309816/0869
63
Definitionen (Fortsetzung)
U W V X
Verwendet als Element
nächste Instruktionsadresse
Variable unbekanntes Element Verwendet als
Subscript
Type -ungezeichnet reserviertes Wort
1 0. OKi.
309816/0869
(a) Informationselementensatze
e = ^Element \
= η j ο
= η j ο
η = ^Bezeichneiy (oder: Identifizier er)
ο = ^OperatorS
(b) Bezeichner - Untersätze
^Bezeichner-Name, Marke, Operand\
a j c I d I m
a = ^ Adressenbezeichner - Anweisungsmarke, Dateiy
c = ^Steuerungsbezeichner\
d =. ^DatenattributN
m = /DatenbezeichnerS
aj a I a IfItIa
f ■ ο I s I I 'Pk
f ■ ο I s I I 'Pk
af = /Anzeigemarke}
a = ^Offsetadresse}
a = ^Speicheradresse (Zeiger)^
a = /'Anweisungsmarke, Unterprogrammname\
f = ^Dateiname^
t = ^nächste Instruktionsadresse\
b I c
b = ^Leerstelle^
c = /'reserviertes Wort für die Steuerung\
ddl dpld,
d, = ^DimensionV
d ^)
dp ^Maske)
d = ^Attribut definierendes reserviertes Wort>
m = ma| mni v. |v
m = /'nicht-numerische Dateni
a Λ. r
m = ^real numerische DatenX
ν = ^komplexe Variable^ V-. - ^logische Variable^
J β. OKI 1972
309816/0869
a * w
k = Oiicht numerische figurative Konstante/
m - \Bedingungsname/
m, = vHollerithwortV
v, = ^Bedingungsvariable/
-1IiKK'
i = ^Ganzzahl-Variable, Index/
j = ^Ganzzahl-Variable, Index\
real numerische KonstanteS - f
ν = <real numerische VariableS
η ι ι '
k, = \ binäre Konstante/
b > ' v
k, = ^Dezimale (Festpunkt) Konstante/
kf = ^Gleitpunkt-Konstante^
k, = \ hexadezimale Konstantej
k = ^numerisch figurative Konstantey
vn - vb I vd I VeJ, vf j vh I vi
v, = ^binäre Variable \
b \ ■ f
v, = ^dezimale Variable/
ν = \externe ungepackte numerische Variable /
vf = ^Gleitpunkt-Variable/
v, = ^hexadezimale Variable/ ·
v. = \ Festpunkt-Variable V
0. OKT. 1972
309816/Q86 9
Tabelle 13: Operator-Untersätze ^Operator^
°n|°w
ll n|w
^Adressenoperator/
^Adressenoperator/
ο = ^Steueroperator\
ο, = \Boolescher Operator/
ο = ^numerischer Operator)
ο = \reserviertes Wort Operator/
°a - °i I °o I °p
i I o I p
o. = (inverse Adresse»
ο = \ Offset )
ο = ^Zeiger S
°c = b I °ca I °cn I °
n I °t
b = yLeerstelle/ ο = ^nichtnumerische Steuerung^
b = yLeerstelle/ ο = ^nichtnumerische Steuerung^
ο = /'numerische Steuerfunktionen/
cn V f
o, = fgehen zur nächsten Instruktion/
1 = ^Logischer Prefix (NICHT)^
lr = \ logische Relation (UND, Oder)
°n = °na| °nf| °rel
ο = /A.rithmetisch\
ο f = /numerische Prefixy
°rel = Relation)
°nf = °fn| °fs
O4. = C numerische Funktion)
fn
s \ *
of = ^Vorzeichen»
ο = ο . l ο
w WiI wo
I • V
°wi = ^reserviertes Wort Instruktion^
ο = /'wahlweises reserviertes Wort Instruktion/
wo X f
<\
Prefix-Operator/
Prefix-Operator/
°fn| °fs
O. OKi. W2
309816/0869
Operat or-Untersätze
°a Z °i| °ol °p I
i| p
ο = b I ο I ο I o.
c I ca cn I t
oca = ^Verkettung) | EOE ,
ρ = ^Punictionscode^ j ^Subscriptionscode^ I C I / I
°f = °fnl °fs! °1P|>
ofn = SIN I COS I SQRT | (andere Funktionen/
°fs =
o± = .1.
1 = nicht) .nicht. I
lr = UND I 0DER I ·υΝΙ)·
°n = °na | °fη I °fs I °rel
°na
°nf = °fn| °fs
ο = .0.
ο
ο
ο = .A.
■ = ο . I o
wo
ο " = ο . I o
w wi I
WENN I GEHEN NACH | FÜHRE AUS I ^irgend ein anderes reserviertes
Wort Instrul tion>
ο .
W1 ■ · 1 serviertes Wort Instruk-
W1 ■ · 1 serviertes Wort Instruk-
ο = MIT j DANN j BEI j VORSCHUB Nirgend ein anderes wahlweises
wo reserviertes Wort ^
ot = {'gehen zur nächsten InstruktionV
Ö. OKT. 1972
309Ö16/0869
Die Marke auf der linken Seite stellt jeweils
ein Glied (irgend ein Glied) des Satzes dar, dessen Glieder den auf der rechten Seite defini erten. Anforderungen entsprechen,
E = <Ausdruck - in IL-I, welcher aus einer alternatierenden Folge von Bezeichnung und Operatoren
besteht.^
F = <Kanäle, Hardwareunterbrechungen, Hardwareindikatoren wie beispielsweise Kondition und überlaufen ze igen.
>·
G = <Gruppe von passend zusammengesetzten Strukturen
verschiedener Untersätze, wie beispielsweise ausführbare Programmanweisungen, Steuerinstruktionen,
Ausdrücke, Elemente.>
0 = <TSatz von Operatoren;^
V -
<Vector - η - Dimensionsvariable ;>
309816/0869
Tabelle 15: Inf ormationsstrukturuntersä1^2 A 9 8 5
Ausdrücke
E =
El
Ein
Ein
Ern =
En
EIa =
Era =
Ea =
Efn =
Ec =
{Ausdruck (runde Klammern müssen gepaart sein)^
Cof ..J £(...J ηΓο £V..J [of...J £(.
η L ) · · *J I · · · I
EIaI Ein[Era | Ern| Ea | En| EfnI Ec | El
EIa I Ein {logischer numerischer (dezimaler) AusdruckS
{g (
ivl ) ~ol (vl !Π
Ern^ /Ern J
{numerischer VergleichsausdruckS En ^or EnJ
{numerischer (arithmetischer) Ausdruck
ConfJJ [(u· J mn j ona £(... j[ j^onf...^ £(.
mn £)... "Jj .·.-·—'
{logischer Ausdruck von AlphanumerenN
^Vergleichsausdruck von AlphanumerenS Ea £or Ea"j
{alphanumerischer Ausdruck^
oa
ma
ofj ofn En
η öl ncl 1vk öl kn
(oca J
f ol
imc J
1 O. OKI. 1972
3 09 8,1 6,/086S
ORIGINAL INSPECTED
Gruppen
G * <Gruppe von passend zusammengesetzten Strukturen
verschiedener Untersätze, wie beispielsweise ausführbare Programmanweisungen, Steuerinstruktionen,
Ausdrücke, Elemente)
Gt I Gf
Gt1 * (auszuführend» Instruktion, falls Konditionalausdruck,
Ec1, wahr ist. Wenn Gt1 ausgeführt ist, wird Gf1
übersprungen )
Sb
Isx ...1
S Si
1+ 1 ot
auszuführende Instruktion, wenn Konditionalausdruck,
Ec1, falsch ist.
fsx .. J 1 Si1 + ll
I ot J
die Subskription, i, bezeichnet die ith-Stufe der geschachtelten
IF-Anweisungen)
ot ■ (definiert, daß die als nächstes während der Programmausführung auszuführende Instruktion die Anweisung 1st,
welche der gesamten "IF"-Anweisung folgt, welche alle
geschachtelten "^"-Anweisungen enthält. Eine Instruktion an den Compiler besteht darin, im Bedarfsfall zu
kodieren, um diese Instruktions-Ausführungsfolge zu erzeugen)
Tabelle 17: Informationsstrukturuntersätze
Datenstrukturen
m ■ (einzelner Bezeichner von Daten (Speicher))
309816/0869
Tabelle 17 (Fortsetzung)
Datenstrukturen
Mh = {Hierarchie von Daten Ms = ( eine Reihe von Daten^
Mt = ( Tabelle von Daten
Sc I Sd|Se
Sc = <.Steuerinstruktion ) Sd = ζ Datendeklarationsanweisung7
Se = (ausführbare Anweisung)
Sb| Sx j Si
Sb = (unbedingte Verzweigung bzw. unbedingter Sprung)
Si = < IF-Anweisung>
IF Ec Gt owi Gf
Sx = (irgendwelche ausführbare Anweisung, außer einer
unbedingten Verzweigung bzw. einem unbedingten
Tabelle 14 zeigt die Zuordnung von alphabetischen Großbuchstaben zu den Haupt-Untersätzen in der Metasprache.
Tabelle 15 definiert die Haupt-Untersatz-"Ausdrücke" in Termen
der nextniedrigeren Stufe in der Metasprachenaufzeichnung.
Tabelle 16 definiert den Haupt-Informationsuntersatz "G" (Gruppen) und wie er in der Metasprache dargestellt ist.
Tabelle 17 zeigt die Zuordnung von Großbuchstaben
mit nachgestellten Zeichen zur Bestimmung der verschiedenen Haupt-Untersätze von Datenstrukturen in der Metasprachenaufzeichnung.
Tabelle 18 zeigt die Zuordnung von Marken zu den Haupttypen von Anweisungen, welche dem Satz "S" (Anweisungen)
10. OKI. 1972 309816/0869
-w-
angehören, einem weiteren Haupt-Informationsstruktur-Untersatz.
Die hier entwickelte Metasprache ist so aufgebaut,
daß sie eine Hierarchie von Konzepten bildet (die sowohl bei der Programmierung als auch bei den Computern nützlich sind),
weiche entsprechend den Stufen an Komplexität un-d Sophisterei
organisiert sind, so daß die ungefähre Hierarchiestufe eines jeden Konzepts jeweils leicht erkannt werden kann·
Fig. 6 zeigt als Beispiel bestimmte nützliche Informationseinheiten von verschiedener Komplexität in
hierarchischer Zuordnung zueinander entsprechend dem in Fig. 6 dargestellten "Linienbaum". 11P" stellt ein Programm,
eine Prozedur oder einen Satz von Programmen dar. Da jede Anweisung ein Glied des Satzes, S, aller Anweisungen ist und
da S ein Untersatz von P ist, ist S mit P verknüpft. Weitere Untersätze von P sind nicht dargestellt.Da nun die Anweisungen
Ausdrücke enthalten, besteht eine weitere Verknüpfung zu E, welches Ausdrücke darstellt, was zeigt, daß E ein Untersatz
von S ist. Da Ausdrücke aus Elementen zusammengesetzt sind, besteht eine weitere Verknüpfung zu e, welches Elemente
darstellt. Der Satz aller Elemente bricht in den Untersatz zusammen: Bezeichner, n, und Operatoren, o.
Der Bezeichnersatz, n, kann in verschiedene Untersätze unterteilt werden, wie dies durch Kleinbuchstaben a, b,
c* f. g» h, i, d, m dargestellt ist und in die Variable v,
welche alle ebenfalls wieder unterteilt werden können, beispielsweise die Variable ν in vb, νς, v^, v^, v^, νρ.
e, kann durch n_, n_ usw. dargestellt werden.
a π
Der Operatorsatz, o,, kann entsprechend Fig. 6, unterteilt werden in O3, oQ ... usw.
α c
Fig. 7 zeigt einen weiteren Aufbau von Informations-Hierarchien in der Metasprache. In Fig. 7 kann der Satz, C,
den Gattungsbegriff für irgend ein Element des Satzes "Steuerungs·
oder Operationssystem11 darstellen; der Buchstabe M kann den
Gattungsbegriff für irgend ein Element des Satzes "Datenstruktur"
1 O. OKT. 1972 309316/0869
darstellen; der Buchstabe A kann ein Speicherfeld darstellen;
der Buchstabe P kann ein Programm darstellen; die Buchstaben S, G und T, welche mit P verknüpft sind, können Elemente verschiedener Abschnitte oder Teile (Untersätze) des Programmes
P darstellen. Jedes dieser Symbole wird weiter unterbrochen in Organisationen, welche eine geringere Komplexheit und
weniger komplizierte Informationsbit enthaltene
Tabelle 19 zeigt eine in COBOL geschriebene "IF"-Anweisungsspezifikation, welche in IBM-Schreibweise geschrieben
ist. Hier sei bemerkt, daß einige der Spezifikationen für einige Ausdrücke in COBOL nie explizit spezifiziert und in
den betreffenden Manuals definiert werden, wie beispielsweise der Ausdruck "NEXT SENTENCE".
Tabelle 20 zeigt die in COBOL geschriebene 11IF"-Anweisungsspezifikation, wie sie sich in der Backus Normalform
(BNF) schreibt.
COBOL "WENN" Anweisungsspezifikation - in IBM-Schreibweise
geschrieben " " "
.. -. (GROSSER ALS}
WENN Arithmetik-Ausdruck-1 IST |NICHTHGLEICH WIE /
L (WENIGER ALSJ
Arithmethik-Ausdruck - 2 fDANNJ /Anweisung-1 ...|
[NÄCHSTER SATZ J
ISONST 1 fAnweisung-2... 1
andernfalls] ^nächster satz J .
Beachte: Spezifikation für einige der Ausdrücke sind:im Text des Handbuches verborgen. Andee Ausdrücke, wie NÄCHSTER
SATZ, sind überhaupt nirgends explizit definiert.
1 0. OKT. 1972
303816/0869
Tabelle
20
COBOL WWENN"-Anwe1sungsspezif1kation in BNF geschrieben
<Symbol? :: ■ WENN (arithmetischer Ausdruck) IST
(Symbol 1/ :: ■ ( Symbol >l (Symbol
> NICHT (Symbol z):: " (Symbol 1>
GROSSER ALS ((Symbol 1>
(Symbol 3> :: « (Symbol 2) (arithmetischer Ausdruckt
(Symbol 4> :: « <Symbol 3>| (Symbol 3> DANN (Symbol 5):: * (Symbol 4) (ausführbare Anweisung}!
(Symbol 4> NÄCHSTER SATZ
(^Symbol 6>:: * (Symbol 5) SONST | (Symbol 5
> ANDERNFALLS (COBOL WENiJ:: « (Symbol 6) fa^ifÜhrbare-Äfiweisunci)/
(Symbol β) NÄCHSTER SATZ
Tabelle 21 zeigt die C0B0L-"WENN"-Anwe1sungsspezifikation, geschrieben in der neu entwickelten Metasprache.
LANDERNFAL LSj
1 rJ rel d I J IANDERNFALLSI
wobei:
Gt * [Sx ...]
ot s (Gehen zur nächsten Anweisung, folgend
Gf m [SX ...] (§*!
ο. » (Gehen zur nächsten Anweisung, folgend
Fig. 10 zeigt allgemein, wie die "WENNM-Anweisung
in der Metasprache dargestellt 1st. Die rechteckigen Kästchen stellen "Ketten von Informationseinheiten" dar. S^ ist eine
Gattungsanweisung von "WENN" und entspricht ■.■;; der Anweisung
von Tabelle 21.
309816/0869
In Fig. 10 ist eine Informationseinheit, beispielsweise Ein in Termen von Informationshierarchien niedrigerer
Ordnung verbunden, wie dies in der Metasprachenschreibweise dargestellt ist»
Die neue Metasprache stellt ein Mittel dar zur Definierung des Informationsgehaltes verschiedener Ursprungssprachen ebenso wie der ersten Zwischensprache, IL-I, und
der zweiten Zwischensprache, IL-2, in einer systematisch markierten allgemeinen Schreibweise, welche Informationseinheiten in genauer, kurzgefaßter Weise definiert. Dadurch
können identische Informationseinheiten leicht festgestellt werden. Ferner kann die jeweilige Hierarchiestufe der
Informationseinheiten (Grad der Komplexität oder Quantität von informationen) erkannt werden, ohne daß man alle elementaren
Details der betreffenden Informationseinheit zu wissen braucht.
Infolge dieses Werkzeuges, nämlich der neuen Metasprache, können in verschiedenen Sprachen gegebene
Ursprungssprachenanweisungen in der neuen Metasprache für Studier- und Vergleichszwecke aufgeschrieben werden, um
Gleich- bzw. Ähnlichkeiten und Unterschiede in den durch
die verschieden Ursprungssprachen gegebenen Funktionen festzustellen, so daß die Zwischensprache-Funktionen in wirtschaftlicher Weise entworfen werden können. Ohne diese Metasprache müßte man sich sehr stark auf das Erinnerungsvermögen
verlassen, und zwar bezüglich all der Komplikationen, Beschränkungen und Spezifikationen der Informationseinheiten
in jeder der Ursprungssprachen, wenn man eine betreffende Anweisung studiert. Außerdem muß man, wenn diese Anweisung
zu einem späteren Zeltpunkt nochmals in Betracht gezogen
werden muß, sein Gedächtnis in bezug auf jede der Ursprungssprachen wieder auffrischen.
§09816/0869
Als Arbeitsergebnis bei der Entwicklung von
Zwischensprachen wurden Parameter identifiziert und in verschiedenen Stufen zu einer Informationshierarchie wie
folgt zusammengestellt:
(a) Für umfangreiche Multielementinformationseinheiten,
wie beispielsweise Anweisungen (S) und Ausdrücke (E)
wurden mindestens 15 Hauptinformationsklassen gebildet.
(b) Mindestens 35 Haupt-Untersätze der obengenannten Gruppen wurden gebildet -- als Multielementeinheiten,- wie beispielsweise logische Ausdrücke (El).
(c) 18 prinzipielle primitive Typen wurden gebildet -- als Sätze von einzelnen Informationselementen, beispielsweise
Operatoren (o), Variable (v), usw.
(d) 44 Untersätze von einzelnen Elementgruppen wurden aufgestellt — welche beispielsweise Typen von Operatoren
enthalten, wie arithmetische Operatoren, logische Operatoren und Steueroperatoren. Diesbezüglich kann
auf die Figuren 6 und 7 zurückgewiesen werden.
Eine der Entdeckungen, die bei der Aufstellung
der Informationshierarchie und der neuen Metasprachen-Schreibweise gemacht wurden, gibt einen guten Einblick in
diese Entdeckungen. Während des Beginns dieser Arbelt wurden alle "reservierten Wörter" (einschließlich Instruktionen) als
"Bezeichner" bzw. "Identifizieren klassifiziert. Auch
"Instruktionen" wurden als Bezeichner von Rufprogrammen
angesehen. Nachdem mit diesen ursprünglichen Klassifikationen Erfahrung gesammelt und damit gearbeitet wurde, hat sich
gezeigt, daß jene "reservierten Wörter", die als Instruktionen oder Befehle und "Instruktionen" verwendet wurden, nicht als
Bezeichner, sondern als "Operatoren" aufgestellt und definiert werden sollten.
Nachfolgend ist eine Gruppe von Tabellen angegeben,
weiche zeigen, wie verschiedene Anweisungen von Haupt-Ursprungssprachen in der neuen Metasprachen-Schreibweise geschrieben
1 β. ΟΚΤ. 1972
309816/0869
werden können und wie sie in Anweisungen in der ersten und zweiten Zwischensprache transformiert und wie sie belegt
werden können.
Die folgenden Tabellen 15 bis 24 zeigen die Darstellung von verschiedenen COBOL- und FORTRAN-Funktionen
in der Metasprachen-Schreibweise:
Tabelle 15 zeigt repräsentative Funktionen, weiche
sich in den höheren Sprachen in der linken Spalte befinden, während die equivalente Funktion im IL-1-Format in der rechten
Spalte aufgeführt ist.
Im Programm gefundene Funktionen
Vergleich Vorzeichen (COBOL) Vorzeichen (FORTRAN) Klasse Bedingung
Zähler
Darstellung im IL-1-Format bei Metasprachen-Schreibweise
IF El Gt Gf IF El Gt Gf IF El Gt Gf
IFS En S1 S2 S3
IFCL η ncl Gt Gf
IFC
BEI
f vk g Gt Gf
Gt Gf
Berechnete Verzweigung (Sprung)
as
mn2 mn3 El, £a3 a4
vn2 mn 4 mn 5 mn El2 C.a5 a<5 vn 3 mn? mn8
mn9 El
Zuordnung
U 0X1.1972
309816/0869
Tabelle 16 zeigt die Bedingungsverzweigung bzw. den Bedingungssprung (IF) der Ursprungssprache FORTRAN und der
Ursprungssprache COBOL in Metasprachen-Schreibwelse. Tabelle 16B für COBOL zeigt Sub-Teile (a), (b), (c), welche in Metasprachen-Schreibweise drei Formen von Bedingungssprungtests (IF) darstellen.
Tabelle 16 zeigt im Unterabschnitt (d) die einfache
IL-1-Anweisung, in welche jede dieser Fortran- lind Cobol-Anweisungen kartographiert werden.
Im Unterabschnitt (e) sind die Aufgaben des universellen Compilers für diese Bedingungsverzweigung (IF)-Anweisungen aufgeführt.
Unterabschnitt (f) von Tabelle 16 zeigt einen typischen Teil der Bedingungsverzweigung IF-Anwe1sung in
IL-2.
Unterabschnitt (g) veranschaulicht, wie die Bedigungsverzweigung-IF-Anweisung belegt 1st.
(Vergleichen nach Ausrichtung von Dezimalpunkten, falls alle
Elemente numerisch sind)
(A) FORTRAN
WENN (Ein) St
(B) COBOL
(a) LOGISCHER TEST WENN El [DANN} Q1
(b) VERGLEICHSTEST
(SONST I- r,
(ANDERNFALLS) Gf
GROSSER ALS WENN E1 IST^NICHtJJgLEICH WIE
SONST
§09816/0869
(c) VORZEICHENPRÜFUNG
/positiv]
WENN En IST (NI CHTJ X NULL 4 Q)ANNj Gt
J (^NEGATIV Ρ
22438
[SONST ANDERNFALLS
Gf während
(d) IL-I
(d) IL-I
WENN" El Gt Gf i i ι ι
während
(e) G. C.-AUFGABEN
^Symboltabelle, aufschlagen von Attributen aller
Elemente/
Elemente/
de zum Ausrichten der Dezimalpunkte, falls die Attribute aller Elemente numerisch sind/
/Ausdrucks-Neuordnung entsprechend den Operatoren zugeordnetem VorrangS
de erzeugen, um den Wert des Ausdruckes zu berechnen^
de zum Testen des logischen Wertes/
(Code zum Ausführen von GT und ÜBERSPRINGEN VON^Gf,
falls Testergebnis wah
^Code zum Ausführen von ^
^Wiederholen obiger Schritte für jede WENN - Anweisung^
-^Wiederholen ♦—\
^Nächste Anweisung, die auszuführen istAot/ist
die Anweisung, welche der zuletzt geschachtelten "WENN" Anweisung folgt» Im IL-1-Format ist es
während. /'Geschachtelte "WENN"-Anweisungen können
in Gt oder Gf erscheinen
\ O; OKI.1972
309816/0869
IL-2
a o η (g) Bedingungsverzweigung IF bzw. WENN
a o η (g) Bedingungsverzweigung IF bzw. WENN
BELEG
URSPRUNG
St
Gt.
Gf.
NÄCHSTER SATZ
^Ausführbare Anweisung... folgend DANN oder
El und begrenzt durch SONST oder ANDERENFALLS oder
ein Schlüsselwort, das eine neue Instruktion bestimmt S
//ausführbare Anweisung... folgend SONST oder
ANDERNFALLS begrenzt durch den Beginn einer neuen Instruktion \
E- orel E0
En orel 0.0
En orel 0.0
BELEGEN IN
GEHEN NACH
= Gt
= Gf
El El
0. (IK Ϊ. 1972
309816/0869
URSPRUNG
BELEGEN IN (IN IL-I)
GROSSER ALS| GLEICH WIE I WENIGER ALS NICHT GROSSER ALS
NICHT GLEICH WIE | NICHT WENIGER ALS
POSITIV ! NULL I
NEGATIV NICHT POSITIV NICHT NULL I NICHT NEGATIV
NEGATIV NICHT POSITIV NICHT NULL I NICHT NEGATIV
ι ■><
= orel - orel 0.0
309816/0869
Tabelle 17 zeigt den FORTRAN-Vorzeichentest in der Metasprache (a) und die äquivalenten Anweisungen in
IL-I (b) und in IL-2 (c). Unterabschnitt (d) von Tabelle 18
zeigt das Belegen bzw. Kartographieren.
(a) FORTRAN
WENN (En) S1, S9, S-
L
C
<j
(b) IL-I
IFS En, S1, S2, S3
(C) IL-2
<Prüfe Symboltabelle alle Elemente von E
müssen numerisch sein> < Code zum Berechnen des Wertes von En^.
COMP En
BRL S1
BRE S2
BRG S3
(d) BELEG bzw. PLAN
51 = <nächste auszuführende Anweisung,falls der Wert
des Vergleichsausdruckes negativ ist.>
52 = <nächste auszuführenden Anweisung, falls der Wert
des Vergleichsausdruckes Null 1st.*>
Sn = <nächste auszuführende Anweisung, falls der Wert
des Vergleichsausdruckes positiv ist.>
309816/0869
Ähnlich wie Tabelle 17 zeigt Tabelle 18 den COBOL-Klassentest; Tabelle 19 zeigt den Bedingungstest für COBOL;
Tabelle 20 ze-igt. die COBOL-Funktion der Bedingungsabzweigung
bzw. des Bedingungssprungs beim Zählew; Tabelle 21 zeigt, die
unbedingten Verzweigungsfunktionen von COBOL und FORTRAN;
Tabelle 22 enthält die COBOL- und FORTRAN-Änderungs- bzw. Schaltfunktionen.
Tabelle 18: Klassentest COBOL
ΪIUMERISCH ) (SONST ]
lphabet,sch|Edann] ^(andernfalls) Gf
IFCL n, ncl, Gt, Gf
<Code für Zeichen durch Nachschlagen in der Zeichentabelle der
durch ncl spezifizierten Klasse,^
BRE Gt
EXEC Gf
3 0 9 8 16/086
rrrnni (SONST )
WENN vk IST [NICHT] kn !DANN] Gt \ ( Gf.
(ANDERNFALLSj (SONST )
WENNIN.CHHJ /0ANNlGt [ANDERNFALLSj Gf.
(nicht) J /|dann]
i^- IFC f, vk, g/ Gt,Gf
(Nachschlagen in der Symboltabelle zur Bestimmung ob mc
oder af oder
4jCode zum Auffinden von mc korrespondierend mit kn, wenn vk
spezifiziert^
^Code zum Adressieren und Holen des Bedingungsvariablenfeldes vk,
in dem gegenwärtig in der Dateistelle, f, vorhandenen SatzP
<Vergleiche^ vk g BRE Gt
EXEC Gf
wobei: g = mc | af f kn
kn = ^Programmgelieferter Testwert, der einen der Bedingungsnamen festlegt, welcher die Bedingungsvariable darstellen
vk = ^Bedingungsvariable (Ursprungsprogrammübersetzer
erzeugt Name und ordnet im Falle eines FormenUber-I
auf tests einen Wert von 1 hinzu)}*
^Übersetzer liefert den Dateinamen, f, der momentan offenen
309316/0869
COBOL
BEI kil [UND JEDE ki2J (Bis ki3j
[SONST 1
l-±-±- BEI kil ki2 ki3 Gt Gf
<CZuordnen eines Namens zur Zählervariablen, i.addiert Name zur
Symboltabelle und setzt ihren Wert auf NuII^
^Ergänze ki3 - unbegrenzt. Für beide ki2 und ki3
Leerstellen (einmal Gt ausführen)
Ergänzung ki2 = kil, ki3 = kil +
1L-2 j = i+1
WENN i* k!3 GEHEN NACH a4
al | WENN | (kil | - i) | a2r a3, | a4 |
a2 | kil = | kil + | ki2 | ||
WENN | (kil | - ki3) | al, a4 | , a4 | |
a3 | Gt | ||||
a4 | Gf |
CUM. 1972 309816/086
Tabelle 21: Unbedingte Verzweigung
FORTRAN
GEHEN NACH a
COBOL
GEHEN NACH
stmt
para
see
BR as
BR as
URSPRUNG
stmt para
sec I
IL-I
as
0. OKI. 1972
3 0 9 8 1 6/0869
Tabelle 22: Ändern
(α) FORTRAN
ZUORDNEN a4 4 . TO a
stmt -ι stmt
GEHENNACH (a ^4 .ι a4 4 o »....)
stmt I stmt ζ
(b) COBOL
ANDERN <a . UM FORTZUFAHREN NACHf
para-1
para
sec
GEHEN NACH a T para
(ÄNDERN as-i, as] ...
1L-2
^Prüfen, daß as-i in der ÄNDERN-Anweisung ein legales Glied des Satzes
in der GO-Anweisung ist/
^In der Symboltabelle Nachschlagen der Adresse (Ioc2) der Verzweigung
^In der Symboltabelle Nachschlagen der Adresse (Ioc2) der Verzweigung
nach as^
<Code, um die Instruktion an der Stelle 1 zur Stelle 2 zu bewegen^
, zur Verzweigung nach Stelle 1/
1 O. OKT. 1972
loc 1: ^Code zur Verzweigung nach as - i
loc 2: <Code zur Verzweigung nach
BELEG
MVAR $1, $2, 4
BR $1+4
BR $1+4
BR as-i
BR as
URSPRUNG stmr-i srmr para-i
see para
IL-I as-i
as as-i as as
Falls α in der CoboI-Anweisung weggelassen wird, muß die
para ° *
GEHEN NACH-Anweisung einen Pragraphennamen haben, die
einzige Anweisung in dem Paragraphen sein und vor der ersten Ausführung durch eine Ändern—Anweisung modifiziert sein.
0 UKT. 1972
30931 6/0869
- A3- -
Tabelle 23 zeigt die berechneten Verzweigungsfunktionen für FORTRAN und COBOL, welche wie oben Beleganforderungen
enthält. Tabelle 24 zeigt einige der Ergibtanweisungsvarianten
in FORTRAN (A) und COBOL (B), ferner nacheinander die Anweisungen in IL-1-Format (c), die Aufgaben
des universellen Compilers (d), das IL-2-Format (e) und die Belegung bzw. Kartographierung (g).
Der Unterabschnitt (h) von Tabelle 24 zeigt Belegeinzelheiten, welche auf bestimmte COBQL-Ursp'rungsanweisungen
anwendbar sind, die dem Unterabschnitt (B) entsprechen, bezogen auf das IL-1-Format.
309816/0869
FORTRAN GEHENNACH ( astatl( aB ...), i
COBOL
GEHEN NACH fa
paral lsecl
'apara2
'asec2
ABHÄNGIG
IL-I GEHEN NACH i, asl, as2, ... asj
- 2>
BR i + BR asl BR as2
BR asj
Beleganforderungen
In COBOL wird, falls i> j, die GEHEN NACH Anweisung ignoriert und die Steuerung geht zur nächst folgenden Anweisung.
W bezeichnet laufende Instruktionsadresse.
Ursprung
11-1
stmt-i
i»*ra-i lsec-i
as-i as-i
as-i
0. IiKT. 1972
309816/0869
Tabelle 24: Ergibtanweisung 2249852
(A) FORTRAN
(1) vl = El
(2) vn = En
(B) COBOL_
(3) RECHNE (] [GERUNDETJ
knll ; £BEI-7 GRÖSSENFEHLER Se...
' ' L r »ι J
(4) ADD mn2 ... ZU mnl /.GERUNDET/
; IßElJ GRÖSSENFEHLER Se... I
(5) ADD mn2 mn2 ... GIBT mnl
(gERUNDETJ Γ; ζβΈΊ] GRÖSSENFEHLER Se ...T
(6) ADD CORRESPONDIEREND Mn2 ZU Mnl ßjERUNDETj Γ; JBElJ GRÖSSENFEHLER Se... J
(7) SUBTRAHIERE CORRESPONDIEREND Mn2 VON Mnl £geRUNDETJ
Γ; £bEiJGRÖSSENFEHLER Se
(8) SUBTRAHIERE mn2 ...
VON
(vnl /GIBT vni])
^kn GIBT vn J
£gERUNDEtJ Γ; fBElJ GRÖSSENFEHLER Se o ..
(9) SUBTRAHIERE mn2 VON mnl [GERUNDETJ Γ; &ElJ GRÖSSENFEHLER Se
(10) MULTIPLIZIERE mn2 BY k LMXÖA
fkn GIBT
[GERUNDETJT ; XbE^ GRÖSSENFEHLER Se,
(11) DIVIDIERE mn2 IN ζνη1 L.GIBT vn^
fkn. GIBT vn
TgERUNDEtI fREST mn4l
Γ; ^BEiJgrÖSSENFEHLER Se ...J
(12) DIVIDIERE mn3 DURCH mn2 GIBT v.n (GERUNDETJ [REST mn4j
Γ; £bEiJGRÖSSENFEHLER Se ...1
ti-1
ZUORDNUNG ow crd M I Se mn4
1 O. OKi. 1972 309816/0869
^Verarbeitungsausdruck, E, zur Übertragung von algebraischer
Schreibweise in eine Operationsfolge, die auf Standard-Vorrangigkeitsregeln beruht^
ylie Symboltabelle wird bereitgestellt mit der fortgeschriebenen
Länge von allen Ausdrücken, E, und den ausführbaren Anweisungsgruppen, Se)
^falls die Ursprungssprachen-Vorrangigkeitsregeln nicht
Standardregeln sind, muß der Ursprungssprachenübersetzer in der erforderlichen Weise runde Klammern hinzufügen,
damit die Information mit der richtigen Vorrangigkeit übertragen wird
11-2
£njf ο η
BELEGEN | ALLGEMEIN | URSPRUNGSSPRACHE | IL-I |
Vl | M | ||
vn | M | ||
mr | M | ||
vnl /mit vn Leerstelle^ mnl |
M M |
||
=E1 | E | ||
=En | E | ||
=kn | E | ||
GERUNDET | setze crd=l | ||
BEI GRÖSSENFEHLER uG · · # |
Se | ||
Element-Ausdruck | ow=0 | ||
ADD CORRES | ow=l | ||
SUBT. CORRES | ow=2 | ||
VTOKETTE | ow=3 | ||
TRENNE | ow=4 | ||
30981 6/0869
93
URSPRUNGSANWEISUNG
(4) mn2 Γ+ mn2 J *.. +mnl E
(5) mn2 4+ mn2v ... E
(B) I U- mn2L ... E
(Sf.) mnl - mn2 E
(10) mn2 ψ|vnl) E
|vnl)
Tkn J
Tkn J
vnl/
kn)
kn)
i
vnl// mn2 E
vnl// mn2 E
kn)
(12) mn3 / mn2 E
309816/0880
4*0
Betrieb
In den vorangehenden Beschreibungsabschnitten wurde ein Computersystem dargestellt, welches sich durch
die optimale Anwendung eines universellen Compilers auszeichnet. Fig. 1 zeigt ein Flußdiagram, bei welchem dai in
einer höheren Sprache vorliegende Ursprungsprogramm einem Ursprungssprachenübersetzer SLT 10- zugeführt wird, in welchem
es in nicht ausführbare Informationen und ausführbare Anweisungen (in dem IL-1-Sprachformat) aufgeteilt wird. Dann
werden die nichtausführbaren Informationen- in der Symboltabelle 13 des universellen Compilers 11 (DC) belegt, d.h.
in diese eingetragen, während die ausführbaren Anweisungen dem Problemtransformationsmodul zugeführt werden. Daraufhin
werden diese Informationen von dem universellen Compiler zu dem Maschinencodeübersetzer MCT 14 übertragen, welcher das
Ursprungsprogramm dann in Form eines primitiven Operationsfolgecodes ausgibt.
Fig. 2 zeigt eine speziel lere Ausführungsform, aus welcher ersichtlich ist, wie jede höhere Sprache (beispielsweise COBOL, FORTRAN u.s.w.) mit ihrem eigenen bestimmten
Ursprungssprachenübersetzer (SLT) versehen wird, beispielsweise 10 . 10, und 10a. Ferner ist aus Fig. 2 ersichtlich,
c τ . a
daß jeder Hostcomputer, zum Beispiel Nr. 1, Nr.2 und Nr. 3
ein eigenes individuelles Programmpaket (MCT) aufweist, welche
jeweils als 14mj, 14 2 und I4 m3 bezeichnet sind.
Die Fig. 11 bis 14 zeigen verschiedene Systemvarianten,
die zur Befriedigung bestimmter Anforderungen verwendet werden können.
Das in Fig. 11 gezeigte Computersystem weist einen GC für diekonventionelle, laufende Verarbeitungsfolge der Compilung
eines Ursprungsprogramms in ein Objektprogramm im Maschinencode für eine bestimmte Maschinenart»« Das Objektprogramm wird in dem
Maße verarbeitet, daß der Computer das Programm verknüpfen,
309816/0869
laden und ausführen kann9 um die während ^er Laufzeit
eingegebenen Daten zu verarbeiten.. Wenn das genannte Objektprogramm
nicht zur Steuerung der Datenverarbeitung dients
wird es auf Kartens Bändern9 Plattendateien oder anderen
sekundären Speichermedien gespeicherte In Fig„ 11 ist ein
sequentielles System von Programmoperationen dargestellt3
bei welchem das Ursprungsprogramm 30 durch den Ursprungs»
sprachenlibersetzer 10 bearbeitet wirdo Das im IL-I= Format
vorliegende Programm wird dann von dem universellen Compiler 11 behandelt, der an seinem Ausgang ein Programm im 1L=2°
Format liefert» Dieses Programm wird von MCT 14 zu einem
Objektprogramm 42 verarbeitet9 welches in einem Maschinencode
für einen bestimmten Hostcomputer beschrieben ist„ Daten,,
wie sie in Block 35 dargestellt sind9 werden für den Betrieb
mit dem Objektprogramm 42 kombiniert-, welch letzteres das
Ursprungsprograrnm ist9 welches in den 'zwischen den"..Ausführungen
des Objektprogramms auftretenden Zwischenzeiten auf Karten,,
Band Oder Platten gespeichert ist» Hierauf folgen die Lauf=
zeit-Maschinencode-Ausführungsprogramme» die durch einen
Block 44 dargestellt sind und einen als Block 45 dargestellten
Ausgang liefern«.
Diese Konfiguration ersetzt die Standartmäßigen
oder konventionellen Compilerfunktionen0 bei welchem große
Mengen an Speicher= und Computerzeit für die Ausführung der Compilation erforderlich sindB die bei diesen bekannten Funktionen
für jede Ursprungssprache mittels eines getrennten Compilers ausgeführt werden«.
In FIg0 11 ist der als Objektprogramm bezeichnete
Block 42 der Ausgang des Compilers D der auf I(artenD Band oder
Platten gespeichert word, ohne daß das Programm tatsächlich
ausgeführt zu werden brauchte Mit anderen Worteno der Ausgang
kann wie bei konventionellen bekannten Computersystemen für eine spätere Ausführung aufbewahrt und gespeichert werden» Eine
gestrichelte Linie 39 zeigte daß zu einem beliebigen,, zweck=
mäßigen späteren Zeitpunkt das Objektprogramm 42 dazu verwendet werden k&nnD um iß Kombination mit dem Datenblosk
3 0 9 816/0869
I 0. OKL 1972
gleichzeitig ausgeführt zu werden»
Fig. 12 zeigt ein Computersystem mit einem universellen Compiler, bei welchem das Ursprungsprogramm
in ein Objektprogramm und eine Symboltabelle mit IL-2-Nieveau
(Stufe der IL-2) verarbeitet werden kann. Diese werden in einem Sekundärspeicher so lange gespeichert, bis das Programm
ausgeführt werden soll. Bei dieser Ausführungsform ist die IL-2 die Implementationssprache des Target- oder Hostcomputers,
was bedeutet, daß der Computer Laufzeit-Interpretationsprogramme
aufweist» welche das Objektprogramm unmittelbar ausführen können. Laufzeit-Interpretationsprogramme bewirken in der erforderlichen
Weise die abschließende übersetzung von IL-2 in primitive Maschinencodes und ergeben erforderlichenfalls die
Typ-Konversion (beispielsweise von Ganzzahl auf Gleitpunkt),
basierend auf Datenattributen, die durch eine Symboltabelle
bereitgestellt werden» oder als Teil der Eingangsdaten oder
in einer Datenbasis,
In IL-2-Sprache geschriebene Objektprogramme sind weniger anfällig für ein Veralten oder andere Änderungen
als bekannte Objektprogramme, die in einem Maschinencode für eine besondere Maschine geschrieben sind. In IL-2 geschriebene
Programme können von jeder beliebigen Maschine einer Maschinenklasse verwendet werden» ohne daß die Ursprungsprogramme neu
compiled bzw. umgewandelt werden müssen. Eine Neucompi1ung
würde in dem Falle erforderlich, wenn die neue Maschine eine
andere Im ρ 1e me ηtat ί ο ηs s ρ ra c he ν e ι wenden würde. Jedoch verändert sich die implementationssprache nicht so häufig wie
Maschinencodes» da die in IL-2 vorliegende Implementationssprache jeweils für eine Maschinenklasse maschinenunabhängig
i st.
In Fig. 12 wird das Ursprungsprogramm 30 durch SLT
und GC 11 iii ein in IL-2 geschriebenes Objektprogramm umgewandelt»
welches durch den Block 42 dargestellt ist. Dieses Objektprogramm in IL-2 kann also zu einem beliebigen späteren
Zeitpunkt auf einem beliebigen Computer der betreffenden
üomputerkiesse ausgeführt werden. Unter Verwendung von Laufzeit-
10.ÜKI.I972 509816/0869
Interpretationsprogrammen 43 zur Verarbeitung des Blockes 35 entsprechend der Objektprogramm-Instruktionsfolge und der
Symboltabelle 13' (welche in einer Datenbasis sein kann), kann ein Ausgang 45 von verarbeiteten Daten wirksam und zweckmäßig
realisiert werden.
Die Fig. 13 und 14 zeigen verschiedene Computersysteme, welche jeweils dadurch voneinander abweichen, daß
in Fig. 14 eine Datenbasis 36 verwendet wird, während in Fig. eine Symboltabelle Anwendung findet. Diese besonderen Computersysteme
von Fig. 13 und 14 stellen eine Annäherung an den Computerbaustiel dar, was ohne das Konzept des universellen
Compilers nicht möglich währe. Diese Annäherung veranschaulicht die allgemeine Verwendung von großen üblichen Datenbasen und
die Eleminierung von Daten-Deklarationen von einer großen Klasse von Computerprogrammen, wodurch das Schreiben von Ursprungsprogrammen
beträchtlich vereinfacht wird. In Verbindung mit der Datenbasis kann ein getrennter Compiler zum
Aufzeichnen der Datendeklarationsinformation verwendet werden, wenn dies erforderlich oder zweckmäßig ist.
Da der universelle Compiler für die Verwendung mit den verschiedensten Ursprungssprachen konzipiert ist, stellt
er ein häufig verwendetes Teil von Compütersystemen dar. Da
ferner auch die Hardware-Firmware-Kosten reduzierende LSI-Technologie
immer mehr Anwendung findet, besteht außerdem die Möglichkeit, die verschiedenen Unterprogramme des universellen Compilers
auf LSI-Chips zu bringen. Diese Verwendung von Hochgeschwindigkeits-Schaltungen
kann außerdem die Compile-Geschwindigkeit
um eine Größenordnung erhöhen, wodurch sich der Gesamtdurchsatz eines Computersystems verdoppeln würde.
Bei der Konfiguration von Fig. 13 und 14 wird das
Ursprungsprogramm durch LST 10 (welches auch in Hardware-Firmware implementiert sein kann) in ein Objektprogramm 41
in IL-I und eine Symboltabelle 13 (außer es wird eine Datenbasis 36 verwendet) übersetzt. Das Objektprogramm 41 und
die Symboltabelle 13 werden so lange in einem Sekundärspeicher aufbewahrt, bis die Ausführung des Programms gewünscht wird.
SQ9816/0 869
10.0KU972
Während der Programmlaufzeit belegt der universelle
Compiler 11 die Ursprungsprogrammanweisungen von IL-I nach IL-2, Belegen so viel wie ein Block oder eine Prozedur
während einer bestimmten Zeit. Die Laufzeit-Interpretierprogramme 44y§Fbeiten diese IL-2-Befehle bzw, führen diese
Befehle aus in Verbindung mit den Eingangsdaten 35 und der Datenattributinformation von der Datenbasis 36 oder
der Symboltabelle 13, wobei ein Programmausgang 44* erzeugt wird,, Im Falle von Programmen, die mehrmals ausgeführt
werden, kann der Ausgang des universellen Compilers in IL-2, Mikrocode oder anderen Primitiven in einem Sekundärspeicher als neues Objektprogramm 451 gespeichert werden,
welches während der folgenden Programmverwendungen unter Umgehung des universellen Compilers verwendet wird·
Als Folge der Sprachentwicklung und der Verwendung
zum Rechnen ist es nun möglich, mit annehmbarer Sicherheit einen Basisuniversalsatz von Funktionen zu definieren, mit
welchem der erste Teil der Anwenderprogramme geschrieben werden kann, unabhängig von der geschriebenen Ursprungssprache,, Dies ermöglicht eine neuerliche Vereinfachung beim
Entwerfen des Compilers«
Anstelle die Compileaufgabe in ein elegantes Gesamtkonzept zu bringen, beispielsweise einensyntax-gerichteten
Compiler oder einen Compiler-Compiler, wird gemäß dem hier
beschriebenen System die Aufgabe entsprechend unabhängigen Parametern aufgeteilt. Demgemäß wird die Sprachübersetzung
von der Problemtransformation getrennt. Mit anderen Worten, die Art, wie das Problem festgelegt ist, wird von dem
eigentlichen Problem getrennt* Ferner wird die Beschreibung der Datenattribute und der Einrichtung (Datendeklaration)
von den aufgrund der Daten (die ausführbaren Anweisungen) auszuführenden Aktionen getrennt.
1 0. OKT. 1972 ä 0 9 8 1 6/0869
2749852
Hierdurch ergibt sich eine geringere Kompliziertheit
des Compilers, ohne daß dem Benutzer neue Beschränkungen
auferlegt werden. Anstelle für jede Sprache für jeden neuen Computer einen vollständig neuen Compiler zu entwerfen8 ist
lediglich ein neuer Ursprungssprachenübersetzer erforderlich,
der von einer höheren Sprache in eine andere übersetzte wenn in der Ursprungssprache eine Änderung vorhanden ist«, Dazu
ist noch ein neuer übersetzer erforderiich, der von einem
auf Maschinenniveau geschriebenen Code auf einen anderen
übersetzte wenn ein neuer Computer Anwendung fin-deto
Für die Anwendung dieses Konzepts der Trennung der Problemtransformation von der Sprachübersetzung wurden
zwei Zwischensprachen entwickelt., nämlich IL-I und IL=2O
Nichtausführbare Informationen in IL liegen in einer ■
Symboltabelle vor« Die ausführbaren Eingangssignal® zu '
dem Problemtransformationsmodul befinden sich in einer
höherstufigen Sprache9 IL-Ia weiche yrsprungssprachen=·
unabhängig ist«, Die ausführbaren Ausgangssignale von dem
Problemtrans formationsmodul weisen Maschinenstufen=Operationscode
format auf9 nämlich IL=E0 welches jeweils für ein©
Klasse von Maschinen maschinan unabhängig ist*
Der Vorteil istfl daß der Problemtransformations=
modul weder bei einer Hinderung'der Ursprungssprache noch
bei einer Änderung eines Computers neu konzipiert zu werden braucht· Aufgrund dieser Stabilität seines Äufbauss kann
der Problemtr@nsform©tionsmodul als eine Hardware-Firmware=
Einheit ausgeführt iierd&n0 wodurch die Arbeitsbelastung
des CPU und des Betriebssystems verringert und. andererseits"
die Compilegesehwindigkeit vergrößert wird*
Als weiteres, äußerst interessant® Möglichkeit
kann der Fluß der Aufgaben durch einen Computer radikal geändert werden, so daß Datenattribute als Teil einer
allgemeinen Datenbasis gespeichert und durch einen speziali·
sierten Compiler unabhängig von ausführbaren Programmen compilet und fortgeschrieben werdens wobei der Compiler
10.0KI.1972
/Oh
lediglich Datenattribute und Einrichtungsinformationen
compiled, den Datenspeicheradressen zuordnet und ansonsten an die allgemeine Datenbasis anschließt. Anwender, welche
bereits in der allgemeinen Datenbasis befindliche allgemeine Daten verwenden» brauchen die Attribute nicht zu deklarieren.
Gemischte Datentypen werden in der erforderlichen Weise umgewandelt, wenn sie während der Laufzeit von der allgemeinen
bzw. gemeinsamen Datenbasis abgerufen werden.
Als weitere Möglichkeit kann die Ursprungssprache eine etwas mehr umgangssprachliche Sprache sein, die
on-line-compiled werden kann, angenommen die umgangssprachliche
Sprache ist eine einfache eins-zu-eins-Obersetzung in die IL-!-Sprache und angenommen der Problemtransformationsmodul
ist eine Hardware-Firmware-Einheit» insbesondere,
wenn der Ursprungs-Syntaxerkenner ebenfalls als Firmware ausgeführt ist«,
Zusammenfassend ist festzustellen, daß das hier
beschriebene Compilersystem die Computerfunktion handlicher
gestaltet und dabei mehr Freiheit und Flexibilität für die Entwicklung besserer Computersysteme und Benutzersprachen
bietete
Ü. OM. 1372 309816/0869
Claims (1)
1. Metasprache, die esne besondere Schreibweise zum Aufstellen von Informations-
einhei rei ι von Computersprachen aufweist, gekennzeichnet durch
υ) eine i iieirarchie von einzeli ien Großbuchstaben, von welchen jeder
ein·::η Gattungsbegriff für ein Glied eines Hauptsatzes bildet, von
wt;Iehern jedes Glied eine Reihe von einfachen Informationseinheiten
ist,
b) eiii (C für jeden einzelnen Großbuchstaben vorgesehene Hierarchie von
Merkmalen, die jeweils aus einem Großbuchstaben und einem oder
mehreren diesen1! nachfolgenden Kleinbuchstaben oder Zahlen bestehen,
welche aufeinanderfolgend kleinere Untersätze obiger Hauptsätze
darstellen, wobei die Glieder dieser Untersätze aus Reihen einfacher
i η form α ti on sei nhei ten bestehen,
c) eine Hierarchie von einzelnen Kleinbuchstaben, die jeweils Hauptsätze
von einfachen Informationseinheiten darstellen, und
d) eine für jeden Kleinbuchstaben vorgesehene Hierarchie von Merkmalen
aus Kleinbuchstaben mit einem oder mehreren daruntergeschriebenen , bzw. tiefgesetzten oder nachfolgenden Kleinbuchstaben oder Zahlen,
die aufeinanderfolgend kleinere Untersätze von einfachen Informationseinheiten darstellen.
10.10.1972
30981 6/0869
249852
25. Metasprache nach Anspruch 24 y dadurch gekennzeichnet, daß die genannte
Metasprachenschreibweise die Erkennung von identischen Informationsuntersätzen
anhand von Merkmale in den verschiedenen Ursprungssprachen ermöglicht, und daß durch diese Schreibweise Informationen entsprechend der Hierarchiestufe
der Informationseinheiten weitergeleitet werden.
26. Metasprache nach Anspruch 24, dadurch gekennzeichnet, daß die genannte
Metasprachenschreibweise einen Hierarchiebaum zur Informationsorganlsation
entsprechend dem Grad der Komplexheit, bzw. der Einfachheit bildet, wodurch feststellbare Merkmale zur Klassifizierung von Ursprungsspracheninformatiionen
entsprechend der in einer Informationseinheit vorhandenen Informationsmenge gebildet werden.
27. Metasprache, dadurch gekennzeichnet, daß sie entsprechend der in den vorstehend
genannten Tabellen 10 bis 18 gegebenen Definitionen aufgezeichnet ist.
28. Computersystem, dadurch gekennzeichnet, daß Programme verwendet werden,
die aus einer Vielzahl von Ursprungssprachen bestehen können, eine Zwischensprache,
die als eine erste Zwischensprache bezeichnet werden kann und die von Ursprungssprachen unabhängig ist, jedoch alle wichtigen Ursprungssprachen-Informationen
aufrecht erhalten werden und die ungefähr den gleichen Grad an Komplexität hat wie die Ursprungssprache, so daß die Anforderungen an einen
Ursprungssprachenübersetzer so gering wie möglich sind, der zur Umwandlung von Ursprungssprachemnformationen in eine Zwischensprache geeignet ist.
29. Computersystem nach Anspruch 28, dadurch gekennzeichnet, daß die Instruktionen
von einem Ursprungsprogramm in einer höheren Sprache verwendet werden, ferner eine Zwischensprache, die als eine zweite Zwischensprache bezeichnet werden
kann, wobei diese zweite Zwischensprache alle wichtigen Informationen des
Ursprungsprogramms aufrecht erhält,
10.10.1972
309816/0869
ferner unabhängig von der Objektmaschinensprache des betreffenden Computers
ist, jedoch trotzdem operationsorientiert und von einer höheren Komplexität ist als der Objektmaschinencode, welcher jedoch schnell für Interpretationsverarbeitung
anpaßbar und verwendbar ist.
30. Computersystem nach einem der Ansprüche 1 bis 13, bzw. 28 oder 19, gekennzeichnet
durch eine Datenbasis zur Speicherung von Datenattributen und anderen nichtausführbaren Informationen, ferner durch einen Sprachen übersetzer zur
Übersetzung von ausführbaren Anweisungen von einer Ursprungssprache in einer
ersten Zwischensprache (IL-I), und durch einen im universellen Compiler vorhandenen
Problemtransformationsmodul, welcher mit der genannten Datenbasis
zusammenwirken und die genannten ausführbaren Anweisungen in die genannte
erste Zwischensprache umwandeln kann.
31. System nach Anspruch 30, dadurch gekennzeichnet, daß eine Vielzahl "M"
von Computermaschinen vorgesehen ist, welche von Ursprungsprogrammen in "N" Typen von höheren Ursprungssprachen betrieben wird, daß eine Vielzahl
"N" von individualisierten Ursprungssprachen Übersetzern vorgesehen ist, von welchen jeder zur Konvertierung einer bestimmten der genannten Ursprungssprachen in eine allgemeine erste Zwischensprache vorgesehen ist, der universelle
Compiler zum Empfang von Ursprungsprogrammen in der genannten ersten Zwischensprache
ausgebildet ist, um die Compilation und dieUmwandlung des Ursprungsprogrammformats
in eine allgemeine zweite Zwischensprache auszuführen, und daß eine Vielzahl "M" von individualisierten Maschinencodeübersetzern vorgesehen ist,
von welchen jeder zur Konvertierung von Ursprungsprogrammen von der genannten zweiten Zwischensprache in den betreffenden Objektmaschinencode für jeden besonderen
Computer geeignet ist.
32. Computersystem nach einem der Ansprüche 28 bis 31, dadurch gekennzeichnet,
daß zur Optimierung der Compilerfunktion von Ursprungsprogrammen in höhere
10.10.1972
309816/0 8 69
Sprachen in spezielle Objekfmaschmencod^s folgendes vorgesehen lsi:
ein Ursprungssprachenübersetzer, welcher das Ursprungsprogramm In eine
erste Zwischensprache derart umwandelt, daß man ein Objektprogramm
in dieser ersten Zwischenspraehe erhält, eine Vielzahl "AA" von Computermaschinen
zur Compilung oder Ausführung des genannten Objektprogramms
für jede einzelne Computermasehine, derart^, daß alle Bedürfnisse für jede
einzelne der M-Computerrnaschinen vermieden werden,, von Irgendeiner der
Ursprungssprachen her umzusetzen.
33. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß zur Optimierung
der Compilerfunktion von Ursprungsprogrammen in höherer Sprache in spezielle Objektmaschinencod^s folgendes vorgesehen ist: ein Ursprungssprachenübersetzer
zur Konvertierung des Ursprungsprgramms in eine erste Zwischenspraehe, der
universelle Compiler das Ursprungsprogramm von der genannten ersten Zwischensprache in ein in einer aligemeinen zweiten Zwischensprache geschriebenes
Objektprogramm umwandelt, und eine Vielzahl "M" von Computemnasehineh
das Objektprogramm ausführen können, ohne daß hierzu eine RecompiSung des
Ursprungsprogramms für fede einzelne Computermaschine erforderlich Ist,
10.10.1972
309816/0869
. 41# .
Leerseite
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18840271A | 1971-10-12 | 1971-10-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2249852A1 true DE2249852A1 (de) | 1973-04-19 |
Family
ID=22692993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19722249852 Pending DE2249852A1 (de) | 1971-10-12 | 1972-10-11 | Computersystem |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPS4847737A (de) |
DE (1) | DE2249852A1 (de) |
GB (1) | GB1367741A (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3321131A1 (de) * | 1982-06-14 | 1984-08-16 | Tektronix, Inc., Beaverton, Oreg. | Selbstlernende rechenmaschine |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6325733A (ja) * | 1986-07-18 | 1988-02-03 | Hitachi Ltd | コンパイラ処理方式 |
EP1729216A3 (de) * | 1993-07-22 | 2007-04-04 | Koninklijke Philips Electronics N.V. | Multimedia-System zur interaktiven Darstellung von Benutzerinformation und Massenspeicher zum Gebrauch mit einem solchen System |
JP3246438B2 (ja) * | 1998-04-01 | 2002-01-15 | 日本電気株式会社 | 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体 |
US6836883B1 (en) * | 2000-06-21 | 2004-12-28 | Microsoft Corporation | Method and system for compiling multiple languages |
EP1174791B1 (de) | 2000-07-10 | 2017-09-27 | Microsoft Technology Licensing, LLC | Vereinheitlichtes Datentypsystem und Verfahren |
US7293261B1 (en) * | 2001-04-25 | 2007-11-06 | Microsoft Corporation | Language-neutral representation of software code elements |
US7890604B2 (en) | 2004-05-07 | 2011-02-15 | Microsoft Corproation | Client-side callbacks to server events |
US9026578B2 (en) | 2004-05-14 | 2015-05-05 | Microsoft Corporation | Systems and methods for persisting data between web pages |
-
1972
- 1972-10-05 JP JP47100264A patent/JPS4847737A/ja active Pending
- 1972-10-10 GB GB4657172A patent/GB1367741A/en not_active Expired
- 1972-10-11 DE DE19722249852 patent/DE2249852A1/de active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3321131A1 (de) * | 1982-06-14 | 1984-08-16 | Tektronix, Inc., Beaverton, Oreg. | Selbstlernende rechenmaschine |
Also Published As
Publication number | Publication date |
---|---|
GB1367741A (en) | 1974-09-25 |
JPS4847737A (de) | 1973-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69516891T2 (de) | Verfahren zum übersetzen von quellkode aus einer computer-hochsprache in eine andere | |
DE69807699T2 (de) | Vorrichtung und verfahren zur syntaxanalyse und transformation von befehlen | |
DE69400869T2 (de) | System zum transkribieren von texteingaben | |
DE60220662T2 (de) | Methode und system zum ausgeben von xml daten basierend auf vorberechneten kontexten und einem dokument objekt modell | |
DE69726339T2 (de) | Verfahren und Apparat zur Sprachübersetzung | |
DE68929038T2 (de) | Verfahren zur Verarbeitung von digitalen Textdaten | |
DE69033203T2 (de) | Programmierbarer Rechner mit automatischer Übersetzung zwischen Quell - und Zielkode mit Versionüberwachung | |
DE69230707T2 (de) | An das Ziel anpassbares Informationsverarbeitungssystem | |
DE69032712T2 (de) | Hierarchischer vorsuch-typ dokument suchverfahren, vorrichtung dazu, sowie eine magnetische plattenanordnung für diese vorrichtung | |
DE69710458T2 (de) | Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen | |
DE69030815T2 (de) | Apparat und verfahren zur erzeugung von dokumenten | |
DE68925523T2 (de) | Erzeugung eines wirksamen Kodes für einen unähnliche Registrierräume enthaltenden Computer | |
DE69226404T2 (de) | Verfahren und Gerät zum Umwandlen von abstrakten Syntaxen auf hohem Niveau in eine Zwischenform | |
DE2249852A1 (de) | Computersystem | |
DE10158419A1 (de) | Verfahren zum digitalen Drucken von zusammengesetzten Dokumenten | |
EP1920357A1 (de) | Migration und transformation von datenstrukturen | |
DE3853806T2 (de) | Dynamische Umgebungsanpassung von Rechnerprogrammen. | |
DE69329672T2 (de) | Ergänzung eines lexikalen Umwandlers durch Analogie | |
DE2312193A1 (de) | Uebersetzer und quellencode-erzeuger fuer eine problemorientierte sprache fuer rechenanlagen | |
DE10054001A1 (de) | Automatisierte Schnittstellengenerierung für Computerprogramme in unterschiedlichen Umgebungen | |
Yamamoto | An approach to the generation of software life cycle support systems | |
DE69219420T2 (de) | Verfahren und gerät zur rechnercode-verarbeitung in einem codeübersetzer | |
DE69322800T2 (de) | Verfahren zur Leistungsverbesserung in einem automatischen Testsystem | |
EP3411803A1 (de) | Gerät und verfahren zur bearbeitung eines binärkodierten strukturdokuments | |
DE69023576T2 (de) | Verbesserte Adressierung in "Prolog". |