Heim > häufiges Problem > Hauptteil

Welche Systemsoftware kann Hochsprachen-Quellprogramme in Zielprogramme umwandeln?

青灯夜游
Freigeben: 2022-07-26 14:58:41
Original
11843 Leute haben es durchsucht

Die Systemsoftware, die Quellprogramme in Hochsprache in Zielprogramme verarbeitet, ist ein „Compiler“. Ein Compiler bezieht sich auf ein Übersetzungsprogramm, das ein in einer höheren Programmiersprache geschriebenes Quellprogramm in ein entsprechendes Zielprogramm im Maschinensprachenformat übersetzt. Der Arbeitsprozess eines Compilers zum Übersetzen eines Quellprogramms in ein Zielprogramm ist in fünf Phasen unterteilt: lexikalische Analyse; Analyse: Wenn bei der Analyse grammatikalische Fehler festgestellt werden, wird eine entsprechende Meldung angezeigt.

Welche Systemsoftware kann Hochsprachen-Quellprogramme in Zielprogramme umwandeln?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.

Systemsoftware, die in Hochsprachen geschriebene Quellprogramme in Zielprogramme verarbeiten kann, ist ein „Compiler“.

Compiler (Compilerprogramm), auch Compiler genannt, bezieht sich auf ein Übersetzungsprogramm, das ein in einer höheren Programmiersprache geschriebenes Quellprogramm in ein entsprechendes Zielprogramm im Maschinensprachenformat übersetzt. Compiler sind Übersetzungsprogramme, die mithilfe eines generativen Implementierungsansatzes implementiert werden. Als Eingabe wird ein in einer höheren Programmiersprache geschriebenes Quellprogramm und als Ausgabe ein in Assemblersprache oder Maschinensprache ausgedrücktes Zielprogramm benötigt. Das kompilierte Zielprogramm durchläuft in der Regel auch eine laufende Phase, um mit Unterstützung des laufenden Programms abzulaufen, die Ausgangsdaten zu verarbeiten und die erforderlichen Berechnungsergebnisse zu berechnen.

Der Compiler muss das Quellprogramm analysieren und es dann in das Zielprogramm synthetisieren. Überprüfen Sie zunächst die Korrektheit des Quellprogramms und zerlegen Sie es in mehrere Grundkomponenten. Zweitens erstellen Sie auf Basis dieser Grundkomponenten entsprechende äquivalente Zielprogrammteile. Um diese Aufgaben zu erledigen, muss der Compiler während der Analysephase einige Tabellen erstellen und das Quellprogramm in eine Zwischensprachform umwandeln, damit es während der Analyse und Synthese leicht referenziert und verarbeitet werden kann.

Funktionen des Compilers:

Der Compiler muss das Quellprogramm analysieren und es dann in das Zielprogramm synthetisieren. Überprüfen Sie zunächst die Korrektheit des Quellprogramms und zerlegen Sie es in mehrere Grundkomponenten. Zweitens erstellen Sie auf Basis dieser Grundkomponenten entsprechende äquivalente Zielprogrammteile. Um diese Aufgaben zu erledigen, muss der Compiler während der Analysephase einige Tabellen erstellen und das Quellprogramm in eine Zwischensprachform umwandeln, damit es während der Analyse und Synthese leicht referenziert und verarbeitet werden kann.

Hauptdatenstrukturen, die bei der Datenstrukturanalyse und -synthese verwendet werden, einschließlich Symboltabellen, Konstantentabellen und Zwischensprachenprogrammen. Die Symboltabelle besteht aus den im Quellprogramm verwendeten Bezeichnern zusammen mit ihren Attributen, zu denen Typen (wie Variablen, Arrays, Strukturen, Funktionen, Prozeduren usw.), Typen (wie ganze Zahlen, reelle Typen, Zeichenfolgen, komplexe Typen) gehören , Etiketten) usw.) und andere vom Zielprogramm benötigte Informationen. Die Konstantentabelle besteht aus den im Quellprogramm verwendeten Konstanten, einschließlich der Maschinendarstellung der Konstanten, und den ihnen zugeordneten Zielprogrammadressen. Ein Zwischensprachenprogramm ist eine Zwischenform eines Programms, das vor der Übersetzung des Quellprogramms in das Zielprogramm eingeführt wird. Die Wahl seiner Darstellung hängt davon ab, wie der Compiler es später verwenden und verarbeiten wird. Zu den häufig verwendeten Zwischenformen in der Sprache gehören die polnische Darstellung, Dreier-, Vierer- und indirekte Dreierformen.

Die Analyse eines Teils des Quellprogramms erfolgt in drei Schritten: lexikalische Analyse, Syntaxanalyse und semantische Analyse. Die lexikalische Analyse wird durch ein lexikalisches Analyseprogramm (auch Scanner genannt) vervollständigt, dessen Aufgabe darin besteht, Wörter zu identifizieren (d. h. Bezeichner, Konstanten, reservierte Wörter und verschiedene Operatoren, Satzzeichen usw.), Symboltabellen und Konstantentabellen zu erstellen und konvertieren Das Quellprogramm wird in eine interne Form konvertiert, die vom Compiler leicht analysiert und verarbeitet werden kann. Der Syntaxanalysator ist der Kernbestandteil des Compilers. Seine Hauptaufgabe besteht darin, zu überprüfen, ob das Quellprogramm den grammatikalischen Regeln der Sprache entspricht. Wenn es nicht grammatikalisch ist, wird eine Syntaxfehlermeldung ausgegeben. Wenn es grammatikalisch ist, wird die grammatikalische Struktur des Quellprogramms zerlegt und ein internes Programm in Form einer Zwischensprache erstellt. Der Zweck der grammatikalischen Analyse besteht darin, zu verstehen, wie Wörter Sätze bilden und wie Aussagen Programme bilden. Das semantische Analyseprogramm prüft außerdem die semantische Korrektheit legaler Programmstrukturen. Sein Zweck besteht darin, die korrekte Verwendung von Bezeichnern und Konstanten sicherzustellen, notwendige Informationen in Symboltabellen oder Zwischensprachenprogrammen zu sammeln und eine entsprechende semantische Verarbeitung durchzuführen.

Der Arbeitsprozess eines Compilers

Ein Compiler wird auch als Kompilierungssystem bezeichnet. Es handelt sich um ein Sprachverarbeitungsprogramm, das in Hochsprachen geschriebene prozessorientierte Quellprogramme in Zielprogramme übersetzt. Der Prozess der Übersetzung eines Quellprogramms in ein Zielprogramm ist in fünf Phasen unterteilt: lexikalische Analyse und Optimierung des Zielcodes. Es führt hauptsächlich eine lexikalische Analyse und eine Syntaxanalyse durch, die auch als Quellprogrammanalyse bezeichnet wird. Während des Analyseprozesses werden grammatikalische Fehler gefunden und umgehend Informationen bereitgestellt.

(1) Lexikalische Analyse

Die Aufgabe der lexikalischen Analyse besteht darin, aus Zeichen bestehende Wörter zu verarbeiten, das Quellprogramm Zeichen für Zeichen von links nach rechts zu scannen, Wortsymbole nacheinander zu generieren und sie als Zeichenfolgen zu verwenden. Die Quelle Das Programm wird in ein Zwischenprogramm aus Wortsymbolketten umgewandelt. Ein Programm, das eine lexikalische Analyse durchführt, wird Lexer oder Scanner genannt.

Die Wortsymbole im Quellprogramm werden vom Scanner analysiert und erzeugen im Allgemeinen binäre Formeln: Wortkategorie; der Wert des Wortes selbst. Wortkategorien werden normalerweise mit ganzen Zahlen codiert. Wenn eine Kategorie nur ein Wortsymbol enthält, stellt die Kategoriecodierung für dieses Wortsymbol vollständig ihren eigenen Wert dar. Wenn eine Kategorie viele Wortsymbole enthält, sollte für jedes ihrer Wortsymbole zusätzlich zum Kategoriecode auch ein eigener Wert angegeben werden.

Im Allgemeinen gibt es zwei Möglichkeiten, lexikalische Analysatoren zu erstellen: manuelle Konstruktion und automatische Generierung. Die manuelle Konstruktion kann mithilfe von Zustandsdiagrammen funktionieren, die automatische Generierung kann mithilfe deterministischer endlicher Automaten implementiert werden.

(2) Syntaxanalyse

Der Syntaxanalysator des Compilers verwendet Wortsymbole als Eingabe und analysiert, ob die Wortsymbolzeichenfolge eine grammatikalische Einheit bildet, die den grammatikalischen Regeln entspricht, z. B. Ausdruck, Zuweisung, Schleife usw. und prüft schließlich, ob ein Programm, das die Anforderungen erfüllt, gemäß den in der Sprache verwendeten Grammatikregeln analysiert wird, um zu überprüfen, ob jede Aussage eine korrekte logische Struktur hat. Das Programm ist die endgültige grammatikalische Einheit. Die grammatikalischen Regeln eines Compilers können durch eine kontextfreie Grammatik charakterisiert werden.

Es gibt zwei Methoden der Grammatikanalyse: Top-Down-Analyse und Bottom-Up-Analyse. Von oben nach unten bedeutet, vom Startsymbol der Grammatik auszugehen, nach unten abzuleiten und den Satz abzuleiten. Die Bottom-Up-Analysemethode verwendet die Shift-In-Reduction-Methode. Die Grundidee besteht darin, die Eingabesymbole einzeln in den Stapel zu verschieben, wenn sich die Oberseite des Stapels bildet eine Produktion eines bestimmten Wenn ein Kandidatenausdruck gefunden wird, wird der Teil oben im Stapel auf das links benachbarte Symbol der Produktion reduziert.

(3) Zwischencode-Generierung

Zwischencode ist eine interne Darstellung des Quellprogramms oder der Zwischensprache. Die Funktion des Zwischencodes besteht darin, die Struktur des kompilierten Programms logisch einfacher und klarer zu machen, insbesondere um die Optimierung des Zielcodes einfacher umzusetzen. Der Zwischencode ist das Zwischensprachenprogramm, und die Komplexität der Zwischensprache liegt zwischen der Quellprogrammsprache und der Maschinensprache. Es gibt viele Formen der Zwischensprache, gängige sind die umgekehrte polnische Notation, Tetragramme, ternäre Formen und Bäume.

(4) Codeoptimierung

Codeoptimierung bezieht sich auf die Durchführung mehrerer gleichwertiger Transformationen am Programm, sodass ausgehend vom transformierten Programm effektiverer Zielcode generiert werden kann. Die sogenannte Äquivalenz bedeutet, dass die laufenden Ergebnisse des Programms nicht verändert werden. Die sogenannte Effektivität bezieht sich hauptsächlich auf die kurze Laufzeit des Zielcodes und den geringen belegten Speicherplatz. Diese Transformation wird Optimierung genannt.

Es gibt zwei Arten der Optimierung: Eine besteht darin, den Zwischencode nach der Syntaxanalyse zu optimieren, die nicht vom jeweiligen Computer abhängt. Die andere wird beim Generieren des Zielcodes durchgeführt und hängt weitgehend vom jeweiligen Computer ab. Die erstere Art der Optimierung kann je nach Umfang des betreffenden Programms in drei verschiedene Ebenen unterteilt werden: lokale Optimierung, Schleifenoptimierung und globale Optimierung.

(5) Zielcodegenerierung

Die Zielcodegenerierung ist die letzte Stufe der Kompilierung. Der Zielcodegenerator wandelt den geparsten oder optimierten Zwischencode in Zielcode um. Es gibt drei Formen von Zielcode:

① Maschinensprachcode, der sofort ausgeführt werden kann, alle Adressen werden verschoben.

② Maschinensprachmodule müssen zusammengestellt werden. Wenn sie ausgeführt werden müssen, kombiniert der Linkloader sie mit einigen Ausführungen Programme Verbinden Sie sie und konvertieren Sie sie in ausführbaren Maschinensprachencode.

③ Assemblersprachencode muss von einem Assembler kompiliert werden, um ausführbaren Maschinensprachencode zu werden.

Drei Aspekte, die sich direkt auf die Geschwindigkeit des Zielcodes auswirken, sollten während der Zielcode-Generierungsphase berücksichtigt werden: erstens, wie man kürzeren Zielcode generiert, zweitens, wie man die Register im Computer vollständig nutzt und die Anzahl reduziert 3. Wie man die Eigenschaften des Computeranweisungssystems voll ausnutzt, um die Qualität des Zielcodes zu verbessern.

Weitere Informationen zu diesem Thema finden Sie in der Spalte „FAQ“!

Das obige ist der detaillierte Inhalt vonWelche Systemsoftware kann Hochsprachen-Quellprogramme in Zielprogramme umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage