COMPILER
Ein Compiler bezieht sich auf ein Computerprogramm, das verwendet wird, um einen Computercode, der in einer Programmiersprache (sogenannte Quellsprache) geschrieben ist, in eine andere Programmiersprache (sogenannte Zielsprache) zu übersetzen. Der Begriff Compiler wird hauptsächlich für Programme verwendet, die Quellcodes von einer höheren Programmiersprache in eine niedrigere Programmiersprache übersetzen. Zum Beispiel Maschinencode, Objektcode oder Assemblersprache zum Erstellen eines ausführbaren Programms.
Es ist wichtig zu beachten, dass es viele verschiedene Arten von Compilern gibt. Falls das kompilierte Programm auf einem Computer ausgeführt werden kann, dessen Betriebssystem oder CPU sich von dem unterscheidet, auf dem der Compiler läuft, wird der Compiler als Cross-Compiler bezeichnet. Ein Bootstrap-Compiler hingegen ist in der Sprache geschrieben, die er kompilieren möchte. Ein Dekompilierer ist ein Programm, das verwendet wird, um eine Sprache auf niedrigerem Niveau in eine Sprache auf höherem Niveau zu übersetzen. Ein Programm, das zur Übersetzung zwischen Hochsprachen verwendet wird, wird als Source-to-Source-Compiler bezeichnet. Es kann auch als Transpiler bezeichnet werden. Ein Programm, das für die Übersetzung der Form von Ausdrücken ohne Sprachwechsel verantwortlich ist, wird als Sprachumschreiber bezeichnet. Der Begriff Compiler-Compiler bezieht sich auf die Tools, mit denen Parser erstellt werden, die für die Durchführung der Syntaxanalyse verantwortlich sind.
Zu den Operationen, die ein Compiler ausführt, gehören unter anderem: Vorverarbeitung, Analyse, semantische Analyse (syntaxgesteuerte Übersetzung), lexikalische Analyse, Codegenerierung, Codeoptimierung und Konvertierung von Eingabeprogrammen in eine Zwischendarstellung. Compiler sind für die Implementierung dieser Vorgänge in verschiedenen Phasen verantwortlich, die korrekte Transformationen und ein effizientes Design der Quelleingabe zur Zielausgabe fördern. Programmfehler, die durch falsches Verhalten des Compilers verursacht werden, können sehr schwer aufzuspüren und zu beheben sein. Compiler-Implementierer investieren daher erhebliche Anstrengungen, um die Korrektheit des Compilers sicherzustellen.
Es ist wichtig zu beachten, dass Compiler nicht die einzigen Übersetzer sind, die zur Transformation von Quellprogrammen verwendet werden. Als Interpreter wird eine Computersoftware bezeichnet, die für die Umwandlung und anschließende Ausführung der angegebenen Operationen verantwortlich ist. Der Übersetzungsprozess beeinflusst das Design der Computersprachen, was zu einer Bevorzugung der Interpretation oder Kompilierung führt. In der Praxis kann die Implementierung eines Interpreters für Compiler und kompilierte Sprachen für interpretierte Sprachen implementiert werden.
Beachten Sie, dass bei Verwendung eines Compilers ein zweistufiger Prozess zum Ausführen eines Programms verwendet wird.
DIE KOMPILATIONSWERKZEUGKETTE
Bei großen Programmen ist der Compiler Teil einer mehrstufigen Toolkette.
(Präprozessor) – (Compiler) – (Assembler) – (Linker) – (Loader).
STRUKTUR EINES COMPILERS
Moderne Compiler bestehen aus zwei Hauptteilen. Jeder dieser Teile ist oft unterteilt. Diese beiden Hauptteile sind das Frontend und das Backend.
Das Frontend ist für die Analyse des Quellprogramms verantwortlich, erstellt eine Zwischendarstellung des Programms und bestimmt seine Bestandteile. Im Allgemeinen ist das Frontend unabhängig von der Zielsprache.
Das Back-End hingegen ist dafür verantwortlich, das Zielprogramm aus der vom Front-End erzeugten Zwischendarstellung zu synthetisieren. Im Allgemeinen gilt das Backend als unabhängig von der Quellsprache.