- Dekompilierung
-
Unter Kompilierung (auch Compilierung oder Übersetzung oder Wandlung) versteht man in der EDV die Anwendung eines Compilers auf den Quelltext eines Computerprogramms. Dabei wird das in einer Quellsprache geschriebene Programm in ein semantisch äquivalentes Programm in der Zielsprache übersetzt.
Das Gegenteil, also beispielsweise die Rückübersetzung von Maschinensprache in Quelltext, wird Dekompilierung und entsprechende Programme Decompiler genannt.
Ablauf
Bei der Kompilierung eines Computerprogrammes wird meist aus dem Quelltext eine Bibliothek oder ein ausführbares Programm erzeugt, die je nach Plattform beispielsweise als ausführbare Datei (Executable), Binärdatei oder Lademodul bezeichnet werden. Es kann aber auch je nach Compiler beispielsweise eine Ausgabe in einer anderen Programmiersprache erzeugt werden, die dann weiterverarbeitet wird.
Wenn durch das Kompilieren eine Bibliothek oder ein Programm erzeugt werden soll, so folgt nach der Kompilierung ein weiterer Arbeitsschritt, der häufig automatisch mit ausgeführt wird, das Linken (Binden). Dabei werden Verweise auf die Laufzeitbibliothek (runtime library) und externe Bibliotheken aufgelöst und das vom Betriebssystem erwartete Format für Programme bzw. Bibliotheken erzeugt. Heutzutage werden dabei die externen Bibliotheken meist nicht fest zum Programm gebunden, sondern lediglich Verweise auf von mehreren Programmen gemeinsam genutzte Bibliotheken (shared libraries) erzeugt. Manche Systeme führen das Linken auch erst zur Laufzeit durch.
Komplexe Kompiliervorgänge werden im Allgemeinen durch einen Projekterstellungsprozess gesteuert.
Gegensatz zur Interpretation
Dem Kompilieren steht die Interpretation gegenüber, die das Programm Anweisung für Anweisung direkt ausführt.
Viele moderne Systeme kompilieren das Programm zur Laufzeit (ganz oder teilweise), etwa Perl, Java oder C# (siehe auch Just-in-time-Compilierung). Dadurch werden die Vorteile von Interpretation und Kompilierung verbunden.
Wikimedia Foundation.