Sunday, February 10, 2019

Bootstrapping (Compiler) - Wikipedia



In der Informatik Bootstrapping ist die Technik für einen selbst kompilieren Compiler produzieren -. Das heißt, Compiler (oder Assembler) in der Source-Programmiersprache geschrieben, dass sie beabsichtigt, kompilieren. Eine anfängliche Kern Version des Compilers (die Bootstrap-Compiler ) in einer anderen Sprache erzeugt wird (die Assembler-Sprache sein könnte); sukzessive erweiterten Versionen des Compilers verwenden diese minimale Teilmenge der Sprache entwickelt.

Viele Compiler für viele Programmiersprachen Bootstrap, einschließlich Compiler für BASIC, Algol, C, D, Pascal, PL / I, Faktor, Haskell, Modula-2, Oberon, OCaml, Common Lisp, Scheme, Go, Java, Rust, Python, Scala, Nim, Eiffel und mehr.




Vorteile [ edit ]


Bootstrapping einen Compiler die folgenden Vorteile: [1][2]


  • ist eine nicht-triviale Test der Sprache kompiliert wird, und als solche ist eine Form von Dogfooding.

  • Compiler-Entwickler und Bug-Reporting-Teil der Gemeinschaft braucht nur die Sprache wissen, zusammengestellt werden.

  • Compiler Entwicklung kann in der Hochsprache erfolgt zusammengestellt werden.

  • Verbesserungen des back-End-Compiler verbessern nicht nur für allgemeine Zwecke Programme, sondern auch den Compiler selbst.

  • es sich um eine umfassende Konsistenzprüfung ist wie es in der Lage sein sollte, seine eigene Objektcode zu reproduzieren.

Beachten sie, dass einige dieser Punkte davon ausgehen, dass die language Runtime ist auch in derselben Sprache geschrieben.


Das Huhn-Ei-Problem [ edit ]


Wenn man einen Compiler für Sprache X (in der Sprache X geschrieben) kompilieren muss, gibt es die Frage, wie der ersten Compiler kompiliert werden. Die verschiedenen Methoden, die zur Lösung dieses Huhn oder das Ei-Problems in der Praxis verwendet werden, umfassen:


  • Implementierung eines Interpreters oder Compilers für Sprache X in der Sprache Y. Niklaus Wirth berichtete, dass er den ersten Pascal-Compiler in Fortran geschrieben hatte Compiler für X wurde bereits in einer anderen Sprache Y geschrieben; Dies ist, wie Schema wird oft Bootstrap

  • Frühere Versionen des Compilers in einer Untergruppe von X geschrieben wurden, für die es einen anderen Compiler existiert. So werden einige Supersets von Java, Haskell und dem ursprünglichen Free Pascal-Compiler gebootet.

  • Ein Compiler, der nicht standardmäßige Spracherweiterungen oder optionale Sprachfunktionen unterstützt, kann ohne Verwendung dieser Erweiterungen und Features geschrieben werden, um die Kompilierung zu ermöglichen Ein anderer Compiler unterstützt dieselbe Basissprache, aber andere Erweiterungen und Funktionen. Die wichtigsten Teile der C ++ Compiler Klirren wurden in einer Untergruppe von C ++ geschrieben, die sowohl von g kompiliert werden kann ++ und Microsoft Visual C ++. Erweiterte Funktionen sind mit einigen GCC-Erweiterungen geschrieben

  • Der Compiler für X Kreuz wird von einer anderen Architektur zusammengestellt, wo es einen Compiler für X existiert. So werden Compiler für C normalerweise auf andere Plattformen portiert. Auch dies ist das Verfahren für Free Pascal nach dem ersten Bootstrap verwendet

  • Schreibe den Compiler in X. dann kompilieren Sie es manuell von der Quelle (höchstwahrscheinlich auf nicht optimierte Weise), und führen Sie das im Code aus, um einen optimierten Compiler zu erhalten. Donald Knuth benutzte dies für sein WEB-fähiges Programmiersystem.

Zu den Methoden zum Verteilen von Compilern im Quellcode gehört das Bereitstellen einer portablen Bytecode-Version des Compilers, um den Compiler mit dem Compiler selbst bootstrap zu compilieren. Das T-Diagramm ist eine Notation, die zur Erläuterung dieser Bootstrap-Techniken des Compilers verwendet wird. [2] In einigen Fällen erfordert ein komplizierter Compiler, der auf einem System ausgeführt wird, auf dem wenig oder keine Software installiert ist, eine Reihe immer komplexerer Assembler und Compiler. [3]


Geschichte [ edit ]



Assembler waren die ersten Sprachwerkzeuge, die sich selbst bootstrappen.

Die erste Hochsprache, die einen solchen Bootstrap bereitstellte, war NELIAC im Jahr 1958. Die ersten weit verbreiteten Sprachen waren Burroughs B5000 Algol (1961) und LISP (1962).

Hart und Levin schrieben 1962 am MIT einen LISP-Compiler in LISP, der ihn in einem vorhandenen LISP-Interpreter testete. Nachdem sie den Compiler so weit verbessert hatten, dass er seinen eigenen Quellcode kompilieren konnte, handelte es sich um Self-Hosting. [4]


Der Compiler, wie er auf dem Standard-Compilerband vorhanden ist, ist ein Maschinensprachenprogramm, das durch das S- Ausdrucksdefinition des Compilers durch den Interpreter an sich selbst arbeiten.



Diese Technik ist nur möglich, wenn bereits ein Interpreter für dieselbe Sprache existiert, die übersetzt werden soll. Sie knüpft direkt an die Vorstellung an, ein Programm als Eingabe auf sich selbst auszuführen, was auch in verschiedenen Nachweisen in der theoretischen Informatik verwendet wird, beispielsweise dem Nachweis, dass das Halteproblem unentscheidbar ist.


Derzeitige Bemühungen [ edit ]


Aufgrund von Sicherheitsbedenken hinsichtlich des Trusting Trust-Angriffs und verschiedener Angriffe auf binäre Vertrauenswürdigkeit reduzieren mehrere Projekte den Aufwand für das Bootstrapping nicht nur von der Quelle Erlaubt aber auch jedem, die Übereinstimmung der Quelle und der ausführbaren Datei zu überprüfen.

Dazu gehören das Bootstrappable Builds-Projekt [5] und das Reproducible Builds-Projekt [6]


Liste der Sprachen mit Self-Hosting-Compilern [ edit


Die folgenden Programmiersprachen haben Selbst- Hosting-Compiler: [ Zitat benötigt ]



Siehe auch [ ]


. 19659047]

No comments:

Post a Comment