Product Design, Manufacturing & Innovation Resources
Heim » Die dreistufige Compilerstruktur

Die dreistufige Compilerstruktur

1980
Programmierer, der in einem Softwareentwicklungsbüro an einer dreistufigen Compilerstruktur arbeitet.

(Abbildung dient nur zur Veranschaulichung)

Ein moderner Compiler ist typischerweise in drei Phasen strukturiert: Front-End, Middle-End und Back-End. Das Front-End analysiert den Quellcode, prüft ihn auf Korrektheit und erstellt eine Zwischendarstellung (IR). Das Middle-End führt Optimierungen an dieser IR durch. Das Back-End übersetzt dann die optimierte IR in Zielmaschinencode für eine bestimmte CPU-Architektur.

Dieses modulare dreistufige Design ermöglicht eine entscheidende Trennung der Belange. Das Frontend ist sprachabhängig, aber maschinenunabhängig; es versteht die Syntax und Semantik einer bestimmten Sprache wie C++ oder Rust. Seine Ausgabe, die Intermediate Representation (IR), ist eine abstrakte, maschinenunabhängige Datenstruktur wie ein Abstract Syntax Tree (AST) oder Three-Address Code. Dadurch wird die Quellsprache von der Zielmaschine entkoppelt.

Der mittlere Bereich ist weitgehend sprach- und maschinenunabhängig. Er verwendet die IR und wendet eine Reihe von Optimierungsdurchläufen an, wie z. B. die Eliminierung von Dead Code, Konstantenfaltung und Schleifenoptimierungen. Da er auf der generischen IR operiert, können diese komplexen Optimierungen einmal geschrieben und auf jede Sprache angewendet werden, die in diese IR kompiliert werden kann.

Das Backend schließlich ist maschinenabhängig, aber sprachunabhängig. Es verwendet die optimierte IR und führt Befehlsauswahl, Registerzuweisung und Befehlsplanung durch, um effizienten Maschinencode für eine bestimmte Zielarchitektur wie x86-64 oder ARM zu generieren. Diese Struktur ermöglicht die Entwicklung von Compilern, die M Sprachen und N Ziele unterstützen, indem M Frontends und N Backends anstelle von M*N einzelnen Compilern geschrieben werden. Dieses Prinzip wird durch moderne Compiler-Infrastrukturen wie GCC und LLVM veranschaulicht.

UNESCO Nomenclature: 1203
- Computerwissenschaften

Typ

Abstraktes System

Störung

Grundlegendes

Verwendung

Weitverbreitete Verwendung

Vorläufer

  • frühe monolithische Compiler-Designs
  • Konzept der Abstraktion in der Softwareentwicklung
  • Entwicklung von Zwischensprachen in frühen Systemen
  • Forschung zu portabler Software (zB das P-Code-System)

Anwendungen

  • Retargetable Compiler (zB GCC, llvm)
  • Cross-Kompilierung für verschiedene Hardwareplattformen
  • sprachunabhängige Optimierungsframeworks
  • Entwicklung neuer Programmiersprachen durch die bloße Erstellung eines neuen Frontends
  • statische Analysetools, die auf Zwischendarstellungen basieren

Patente:

NA

Potenzielle Innovationsideen

Aufgrund des hohen Datenverkehrs durch Web-Scraping-Bots, der derzeit mehr als 40.000 Anfragen pro Tag umfasst, ist dieser Inhalt ausschließlich Community-Mitgliedern vorbehalten.
> Anmelden < oder > Registrieren < (100% kostenlos) Zugriff darauf sowie auf alle anderen eingeschränkten Inhalte und Tools.

Verwandt mit: Compilerentwurf, Front-End, Middle-End, Back-End, Zwischendarstellung, ir, Optimierung, Codegenerierung, Modularität, GCC, llvm.

Historischer Kontext

Die dreistufige Compilerstruktur

1975-06-01
1980
1980
1980
1986-01-01
1990
1990
1973
1980
1980
1980
1982-07-01
1988-06-01
1990
1993

(wenn das Datum unbekannt oder nicht relevant ist, z. B. „Strömungsmechanik“, wird eine gerundete Schätzung seines bemerkenswerten Auftretens bereitgestellt)

Verwandte Erfindungen, Innovationen und technische Prinzipien

Bilder in voller Größe und Downloads sind nur für registrierte Mitglieder 100% kostenlos verfügbar.

> Login <