| Compiler | Dieser Text beschreibt Compiler. Der untere Text beinhaltet die Compiler Beschreibung. Soweit es sich um ein definierbares Objekt handelt, sollte hier eine Compiler Definition vorhanden sein. Sollte eine Definition von Compiler fehlen, kann diese von Ihnen verfaßt werden. Wir sind bestrebt die Beschreibung von Compiler möglichst ausführlich zu halten.
Jeder Text bei Know-Library, sowie ein Teil davon (Definition, Beschreibung etc.), außer Bücher Beschreibungen kann bearbeitet werden. Falls die Beschreibung auf dieser Seite nicht korrekt ist klicken Sie auf 'Beschreibung editieren' um den Text zu korrigieren bzw. neuen einzufügen. Weitere Informationen und Bücher zum Thema Compiler Beschreibung , so wie Link zum Forum finden Sie weiter unten. Eine Übersicht der Texte, die das Thema Compiler beschreiben finden Sie auf der Seite alle Artikel über Compiler. Fragen zu dem Thema Compiler können im Forum gestellt werden. Klicken Sie hier um zu dem Forum zu wechseln.
Compiler ArtikelEin Compiler (auch Kompilierer oder Übersetzer) ist ein Computerprogramm, das ein in einer Quellsprache geschriebenes Programm in ein semantisch äquivalentes Programm einer Absichtsprache umwandelt. Üblicherweise handelt es sich dabei um die Übersetzung eines von einem Programmierer in einer Programmiersprache geschriebenen Quelltextes nach Assemblersprache, Bytecode oder Maschinensprache. Es gibt auch Compiler auch Transcompiler genannt, die Code in anderen Programmiersprachen erzeugen können. Die Anwendung eines Compilers wird als Kompilierung genannt.
Der Compilerbau, also die Programmierung eines Compilers, ist eine eigenständige Disziplin innerhalb der Informatik.
Die Nennungen Compiler oder Kompilierer sind eigentlich irreführend, weil sie von der Zusammenstellung von Tabellen herrühren, die der Compiler für seine interne Datenverwaltung benötigt, was aber an der Kernaufgabe eines Compilers vorbeigeht.
Verwandt mit einem Compiler ist ein Interpreter, der ein Programm nicht in die Absichtsprache übersetzt, sondern Schritt für Schritt direkt ausführt.
Buch-Tipp: Arbeitszeugnisse in Textbausteinen. Rationelle Erstellung, Analyse, Rechtsfragen Ein Buch für Personalprofis und Arbeitnehmer! Mit diesem Zeugnisbuch arbeite ich jetzt schon seit 7 Jahren. Ich kenne nichts besseres auf dem aktuellen Markt. Vor allem haben diese Zeugnisformulierungen vor Arbeitsrichtern bestand und ausserdem werden sie von Richtern angewandt und sogar empfohlen. Mein grösstes Lob bekam ich von einem Juristen,... | |
Es lassen sich in dem Wesentlichen zwei Phasen unterscheiden: eine Analysephase, die den Quelltext analysiert und daraus einen Syntaxbaum erzeugt, sowie die Synthesephase, die daraus die Absichtprogramm erzeugt.
Buch-Tipp: Bilanzen lesen leicht gemacht. Zahlen richtig analysieren und interpretieren Ein gelungenes Werk - logisch aufgebaut Dieses Buch hat mir endlich ein gutes Grundverständnis für Bilanz und GuV vermittelt. Dank meiner schlechten Vortragenden beim Studium war ich gezwungen, mir das Wissen anderwärtig anzueignen. Ich war schon der Meinung, daß dieses Fach ca. trocken und kompliziert vermittelbar ist. Dieses Buch hat tatsächlich... |
Analysephase (auch "Frontend") |
Buch-Tipp: Das Drama des begabten Kindes und die Suche nach dem wahren Selbst. Banri Ikku oder eins führt zu zehntausend Allice Miller ist ein Meilenstein der psychoanalytischen Tätigkeit, da Ihr Sprachduktus nicht vom Elfenbeinturm kommt. Sie beweist wie man durch adequaten Sprachgebrauch einer breiten Masse der Bevölkerungschicht den selbstreflektierenden Einblick in seine Kindheit ermöglicht.
Miller erläutert ein altbekanntes... |
| |
Die lexikalische Analyse zerteilt den eingelesenen Quelltext in zusammengehörende Token verschiedener Klassen, z.B. Schlüsselwörter, Bezeichner, Zahlen und Operatoren. Dieser Teil des Compilers heißt Scanner oder Lexer.
Ein Scanner benutzt gelegentlich einen separaten Screener, um Whitespace (Leerraum, also Leerzeichen, Zeilenenden, usw.) und Kommentare zu überspringen.
Buch-Tipp: Das Große Buch der Markttechnik Ein ehrlicher Autor Herzlichen Dank an Michael Voigt, der bewiesen hat, dass ihm mit diesem Buch nicht ums Geldverdienen geht ( wie bei vielen sogennanten Autoren, die stets ein Geheimnis zu veraten haben und am Ende doch ca. an ihre eigene Tasche denken). Was ich vor allem aus diesem Buch lernte, ist, dass der beste Weg,Weg der Mitte ist, man ist... |
| |
Die syntaktische Analyse überprüft, ob der eingelesene Quellcode formal richtig ist, d.h. der Syntax (Grammatik) der Quellsprache entspricht. Dabei wird die Eingabe in einen Syntaxbaum umgewandelt.
Dieser Teil wird auch als Parser genannt.
Buch-Tipp: Die Reise mit Paula Nirwana eines Therapeuten Sechs Erzählungen über Therapeuten und ihre Patienten, ihre Beziehung zueinander, übermäßige Sympathien und andererseits wage Antipathien und die Anfänge des "Phänomens Gruppentherapie" in den 70ern. Verlust, Trauerarbeit, (zu) starke Mütter, versagte Vaterliebe und überbewertete Selbstdarstellung sind ebenso Teil... |
| |
Die semantische Analyse überprüft die statische Semantik, also "logische Rahmenbedingungen". Zu dem Beispiel muss eine Variable deklariert worden sein, bevor sie benutzt wird, und Zuweisungen müssen mit kompatibel (verträglich)
Buch-Tipp: Einführung in LabVIEW Einführung in LabVIEW by Wolfgang Georgi In industriellen Anwendungen gehört LabView zu den Standardprogrammen der Mess-, Steuer- und Regeltechnik. Dank verschiedener Aktivitäten, die den Einsatz der grafischen Programmiersoftware in dem Hochschulbereich vorantreiben sollen, findet LabView auch in dem Lehrbereich stärkere Verbreitung. An diese Anwender... |
Synthesephase (auch "Backend") | |
Die Synthesephase erzeugt aus dem in der Analysephase erstellten Baum den Programmcode der Absichtsprache.
Buch-Tipp: Film verstehen Umfassender Überblick zu dem Thema Film Das Buch ist wirklich gut und bietet einen weitgehenden Überblick über die verschiedenste Bereiche um das Thema Film. Auch für diejenigen, die sich mit Film noch nicht genauer beschäftigt haben, bietet das Buch einen leichten Einstieg - durch verständliche Erklärungen und passende Illustrationen. |
| |
Siehe Programmoptimierung.
Buch-Tipp: Ich bin o.k., Du bist o.k Noch stets aktuell Über 30 Jahre ist das Büchlein schon alt. Nach meinem Eindruck beschreibt es nach wie vor hochaktuell und für Otto Normalverbraucher verständlich, was der Hintergrund zu privaten und geschäftlichen Konflikten sein kann. Der Schreibstil des Buchs ist so gehalten, dass man es gut als Bettlektüre konsumieren kann.
Für mich... |
| |
Bei der Codegenerierung wird endgültig aus dem Syntaxbaum der Programmcode in der Absichtsprache erzeugt. Falls die Absichtsprache die Maschinensprache ist, kann das Ergebnis direkt ein ausführbares Programm sein oder eine so genannte Objektdatei , die durch das Linken mit der Laufzeitbibliothek und evtl. weiteren Objektdateien zu einer Bibliothek oder einem ausführbaren Programm führt.
Buch-Tipp: Jahresabschluss und Jahresabschlussanalyse Klasse - selbst wenn man ExRe nicht versteht Ich studiere in dem ersten Semester Wirtschaft, und eins weiß ich schon jetzt: Ich werde wohl niemals Steuerberater oder Buchhalter.
Mir fehlt ganz einfach das Verständnis für die hohe Kunst des Bilanzierens und seiner Feinheiten.
Dementsprechend war ich vor meiner ersten Klausur über den Jahresabschluss... |
| |
Üblicherweise bietet ein Compiler Optionen für verschiedene Optimierungen mit dem Absicht, die Laufzeit oder den Speicherplatzbedarf deAbsichtprogramms zu verkleinern.
Die Optimierung erfolgt in Abhängigkeit von den Merkmalen der Hardware, z. B. wieviele und welche Register der Prozessor des Computers zur Verfügung stellt.
Einige Optimierungen führen dazu, dass der Compiler Programmkonstrukte in semantisch äquivalente, aber günstigere Konstrukte umwandelt, die keine Entsprechung in dem Quellcode haben. Eine Folge ist, dass es bei Aktivierung entsprechender Optimierungen kaum noch möglich ist, den Programmablauf mit einem interaktiven Debugger zu verfolgen.
Im Folgenden betrachten wir einige Optimierungsmöglichkeiten eines Compilers. Dabei handelt es sich naturgemäß ca. um Feinabstimmung an einem bestehenden Programm. "Optimierung" bedeutet auch nicht, dass das Programm danach in irgendeiner Weise optimal wäre, ca. besser. Es ist auch möglich, dass das Programm nachher "totoptimiert" ist, also die Optimierung über die Absicht soweit hinausgeschossen ist, dass das Programm effektiv langsamer ausgeführt wird. Viele Optimierungen moderner Compiler sind solche Abwägungen zwischen dem, was möglich ist, und dem, was sinnvoll ist. Die Grenze zwischen beiden ist meist nicht klar ersichtlich und muss durch Tests herausgefunden werden.
Es sollte nicht vergessen werden, dass das größte Optimierungspotenzial häufig darin besteht, den Algorithmus selbst zu verändern bzw. durch einen besseren zu ersetzen. Dieser Ablauf kann nicht automatisiert werden, sondern muss durch den Programmierer erfolgen.
|
Reduzierung von Assemblerinstruktionen | |
Wenn man zu dem Beispiel in einer höheren Programmiersprache den Inhalt von 2 Variablen vertauscht, dann benötigt man eine Hilfsvariable:
Reduzierung von Assemblerinstruktionen
| höhere
|
| Programmiersprache
|
| Assembler ohne Optimierung
| Assembler mit Optimierung
|
| t = a
|
| a --> Register 1
|
| Register 1 --> t
|
| a --> Register 1
|
| a = b
|
| b --> Register 2
|
| Register 2 --> a
|
| b --> Register 2
|
| b = t
|
| t --> Register 3
|
| Register 3 --> b
|
|
| Register 1 --> b
|
| Register 2 --> a
|
|
|
| |
Die Berechnung des Kreisumfangs mittels
pi = 3.14
u = 2 * pi * r
kann ein Compiler bereits zu dem Übersetzungszeitpunkt zu "u = 6.28 * r" auswerten. Dies spart die Multipliktion "2*pi" zur Laufzeit des erzeugten Programms. Diese Vorgehensweise wird als Konstantenfaltung (engl. "constant folding") genannt.
|
Eliminierung toten Programmcodes | |
Wenn der Compiler erkennen kann, dass ein Teil des Programmes niemals durchlaufen wird, dann kann er diesen Teil bei der Übersetzung weglassen.
Beispiel: ... ...
100 goto 900
200 k=3
900 i=7
... ...
Wenn in diesem Programm niemals ein GOTO auf das Label 200 erfolgt, dann kann auf die Anweisung "200 k=3" verzichtet werden.
|
Erkennung von nicht benötigten Variablen | |
Wird eine Variable nicht benötigt, dann wird sie auch nicht berechnet.
Beispiel: subroutine test (a,b)
b = 2 * a
c = 3.14 * b
return b
Hier wird die Variable c nicht benötigt: Sie steht nicht in der Parameterliste, wird in späteren Berechnungen nicht benutzt und wird auch nicht ausgegeben. Darum entfällt die Anweisung "c = 3.14 * b".
|
Optimierung von Schleifen | |
Insbesondere Schleifen versucht man zu optimieren, indem man z.B.:
- möglichst viele Variablen in Registern hält (z.B. die Schleifenvariable)
- Berechnungen innerhalb der Schleife, die in jedem Durchlauf dasselbe ergeben, ca. einmal berechnet
- die Schleife komplett auflöst (englisch loop unrolling), falls die Anzahl der Schleifendurchläufe konstant ist. Die Anweisungen innerhalb der Schleife werden dann sequentiell (hintereinander) ausgeführt ohne Verwendung einer Schleife.
|
Reduzierung von Paging zur Laufzeit | |
Zusammenhängender Code - z. B. eine Schleife - sollte zur Laufzeit möglichst auf der gleichen "Seite" (zusammenhängend vom Betriebssystem verwalteter Speicherblock) in dem Hauptspeicher liegen. Dies kann man evtl. dadurch erreichen, dass man dem Programmcode geeignete Leeranweisungen ("NOPs" - No OPeration) hinzufügt. Dadurch wird der Programmcode zwar größer, aber wegen des reduzierten Pagings wird das Programm schneller ausgeführt.
|
| |
oder auch viele andere, die zusammen mit IDEs ausgeliefert werden (Visual Basic, Delphi etc.)
|
Weiteres zu dem Artikel Compiler | | Andere Leser interessierten sich auch für folgende Beschreibungen: | Bytecode, C, Delphi, Eliminierung, Gnu, Goto, Paging, Parser, Programmierer, Scanner, Tests, Token, Whitespace | | Schnellzugrif auf verwandte Texte: | | | NEU! Frage im Forum zum Thema: | | Wenn die Beschreibung 'Compiler' Ihrer Meinung nach nicht korrekt ist oder in aktueller Version Fehler enthalten sind oder es fehlt die Compiler Definition, dann klicken Sie bitte auf "Beschreibung bearbeiten" und schreiben Sie die Eigene Version des Textes. Die Änderungen in der Beschreibung werden sofort aktiv und für alle sichtbar. Ein Administrator wird Ihre Version der Beschreibung und Definition von 'Compiler' nachher prüfen. Bitte achten Sie auf die Urheberrechte (Copyright). Wir sind für die besseren Beschreibung von 'Compiler' und 'Compiler' Definition sehr dankbar.
Alle Tipps zu den Bücher auf dieser Seite wurden automatisch generiert. D.h. die Bücher wurden aus einer Datenbank von dem Computer ausgesucht. Deshalb kann es vorkommen, dass vorgeschlagene Bücher nicht ganz der 'Compiler' Beschreibung entsprechen.
|
|
|
· Diese Seite wurde bisher 2.985 mal abgerufen. · Letzte Counteraktualisierung erfolgte am 17.05.2008 um 00:20:16 · Diese Seite wurde zuletzt geändert um 13:01, 30. Sep 2004. · Letzte Portalaktualisierung erfolgte um 08:00:00 GMT, 25.02.2008
|