Compiler und Linker Flashcards
Was ist ein Interpreter?
Ein externes Programm, welches zur Laufzeit den geschriebenen Programmcode interpretiert, Schritt für Schritt ausführt und nicht direkt in Maschinencode übersetzt. Beispiele dafür sind Python, PHP, JavaScript und Basic
Was sind die Vor und Nachteile eines Interpreters?
+Plattform-unabhängig (Hardware, Betriebssystem)
+Programmiersprachen weniger strikt und sehr flexibel
-Benötigt Installation eines Interpreter-Programms
-Langsame Ausführung, da Programm interpretiert werden muss
-Kein direkter Zugriff auf Hardware möglich
-Keine Code-Optimierung möglich
Was ist ein Compiler?
Ein Compiler übersetzt das Programm in Maschinencode, sodass es direkt ausgeführt werden kann. Beispiele dafür sind C oder Java
Was sind die Vor- und Nachteile eines Compiler?
+ Hocheffizienter, schneller, direkt ausführbarer Code
+ Direkte Nutzung von Hardware-Eigenheiten möglich
+ Code-Optimierung
– Programm nur auf gewählten Zielplattformen lauffähig
Was sind die einzelnen Phasen eines Compilers beim übersetzen?
Lexikalische Analyse Syntaktische Analyse Semantische Analyse Zwischencodeerzeugung Codeoptimierung (optional)
Was passiert in der Lexikalischen Analyse?
-Zerlegung in Folge von Symbolen
(Namen, Literale, Schlüsselwörter, …)
-Überlesen bedeutungsloser Zeichen
- Lexikalische Korrektheit
Was passiert in der Syntaktischen Analyse?
-Prüfung auf syntaktische Korrektheit
-Zerlegung der Symbolfolgen des 1. Schritts
in syntaktische Einheiten
(Deklarationen, Anweisungen, Ausdrücke, …)
Was passiert in der Semantischen Analyse?
-Kontextabhängige Prüfung (z.B. sind
aufgerufene Funktionen definiert,
benutzte Variablen deklariert)
Was passiert bei der Zwischencodeerzeugung?
Erzeugung der ersten Version des
Ausgabeprogramms
Welche Compiler Typen gibt es?
Prä-Compiler Cross-Compiler Just-In-Time Compiler Nachgeschalteter Assembler Transpiler (source-to-source compiler)
Was macht der Prä-Compiler?
eine Vorstufe zum eigentlichen Compiler, z.B. um andere
Quelltextdateien einzubinden, automatisches Ersetzen vor der Übersetzung
durchzuführen
Was macht der Cross-Compiler?
Das ausgegebene Maschinensprachen-Programm ist für
eine andere Plattform bestimmt, als die Plattform, auf der entwickelt wird
(wird z.B. eingesetzt bei eingebetteten Systeme)
Was macht der Just-In-Time Compiler?
Der Code wird erst während der Ausführung des
Programms übersetzt (z.B. integriert in einen Interpreter)
Was macht der Nachgeschalteter Assembler?
Ist die Ausgabe des Compilers Assembler und
nicht Maschinensprache, so muss ein Assemblierer nachgeschaltet werden
Was macht der Transpiler?
Programm wird in andere
Programmiersprache übersetzt (z.B. TypeScript nach JavaScript).