,

Übersetzung objektorientierter Programmiersprachen

Konzepte, abstrakte Maschinen und Praktikum „Java-Compiler“

Specificaties
Paperback, 287 blz. | Duits
Springer Berlin Heidelberg | 1998e druk, 1998
ISBN13: 9783540642565
Rubricering
Springer Berlin Heidelberg 1998e druk, 1998 9783540642565
Onderdeel van serie Springer-Lehrbuch
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

Das Lehrbuch führt umfassend in die verschiedenen Übersetzungstechniken ein. Im Praxisteil entwickeln die Autoren die Spezifikation eines Übersetzers für Java. Sie kann als Eingabe für einen Übersetzergenerator verwendet werden, der daraus ein ablauffähiges C-Programm erzeugt. Das Buch enthält zahlreiche Abbildungen, Übungen und ein komplettes Software-Engineering-Praktikum zum Bau eines Java-Compilers.

Specificaties

ISBN13:9783540642565
Taal:Duits
Bindwijze:paperback
Aantal pagina's:287
Uitgever:Springer Berlin Heidelberg
Druk:1998

Inhoudsopgave

1: Theorie.- 1 Einleitung.- 1.1 Übersetzung von Programmiersprachen.- 1.2 Objektorientiertheit und objektorientierte Programmiersprachen.- 1.3 Reine und hybride objektorientierte Programmiersprachen.- 1.4 Die Programmiersprache Java.- 1.5 Überblick über die weiteren Kapitel.- 2 Objektorientierte Konzepte.- 2.1 Klassenbasierte objektorientierte Sprachen.- 2.1.1 Objekte und Klassen.- 2.1.2 Gleichheit und Kopieren von Objekten.- 2.1.3 Abstrakte Klassen und Interface-Klassen.- 2.1.4 Multi-Methoden.- 2.2 Vererbung.- 2.2.1 Einfachvererbung.- 2.2.2 Mehrfachvererbung.- 2.2.3 Dynamische Vererbung.- 2.3 Kapselung.- 2.4 Parametrisierung und generische Datentypen.- 2.5 Parametrisierung versus Vererbung.- 2.6 Polymorphismus.- 3 Übersetzung objektorientierter Konzepte und abstrakte Maschinen.- 3.1 Lose Übersetzung.- 3.1.1 Abstrakte Maschine AM.- 3.1.1.1 Laufzeitumgebung der abstrakten Maschine AM..- 3.1.1.2 Befehle der abstrakten Maschine AM.- 3.1.1.3 Adressierungsarten.- 3.1.2 Klassen und Einfachvererbung.- 3.1.3 Methodendeklarationen.- 3.1.4 Nachrichten und Methodenaufrufe.- 3.1.5 Objekte.- 3.1.6 Semiformale Beschreibung der Semantik der abstrakten Maschine.- 3.2 Smalltalk-80-Realisierung.- 3.2.1 Klassen und Einfachvererbung.- 3.2.2 Übersetzung von Methoden.- 3.2.3 Objekte.- 3.2.4 Objektverwaltung.- 3.2.5 Methodenaufruf.- 3.2.6 Die abstrakte Maschine für Smalltalk-80.- 3.3 Java-Realisierung.- 3.3.1 Klassen und einfache Vererbung.- 3.3.1.1 Einträge im Konstantenpool.- 3.3.1.2 Einträge für Instanzvariablen.- 3.3.1.3 Einträge für Methoden.- 3.3.1.4 Bemerkungen.- 3.3.2 Methodendeklarationen.- 3.3.3 Methodenaufruf und Rücksprung.- 3.3.4 Objekte.- 3.3.5 Die virtuelle Maschine von Java.- 3.4 C++-Realisierung.- 3.4.1 Methoden, Klassen und einfache Vererbung.- 3.4.2 Objekte.- 3.4.3 Methodenaufruf.- 3.4.4 Mehrfachvererbung.- 3.5 Parametrisierung.- 3.5.1 Kopierende Sicht.- 3.5.2 Echte generische Sicht.- 4 Typinferenz und Typüberprüfung.- 4.1 Typisierung und Binden.- 4.1.1 Typisierung.- 4.1.2 Binden und Methodensuche.- 4.1.3 Zusammenhang von Typisierung und Binden.- 4.1.4 Typisierungsprobleme.- 4.2 Typisierung mit Datenflußanalyse.- 4.2.1 Datenflußanalyse.- 4.2.2 Typisierung mit Datenflußanalyse.- 4.3 Typisierung mit Constraints.- 5 Optimierungen.- 5.1 Standardoptimierungen.- 5.1.1 Elimination redundanter Ausdrücke.- 5.1.2 Konstantenfaltung.- 5.1.3 Elimination toten Programmcodes.- 5.1.4 Kopien-Verbreitung.- 5.1.5 Schleifenoptimierungen.- 5.1.6 Reduktion des Operators und algebraische Umformungen.- 5.1.7 Kontrollflußoptimierungen.- 5.2 Objektorientierte Optimierungen.- 5.2.1 Intraprozedurale Klassenanalyse.- 5.2.2 Analyse der Klassenhierarchie.- 5.2.3 Effiziente Implementierung der Methodensuche.- zur Übersetzungszeit.- 5.2.4 Inkrementelle Programmentwicklung und separate Übersetzung.- 5.2.5 Klassentest.- 5.2.5.1 Einfach-Klassentest.- 5.2.5.2 Unterklassentest.- 5.2.5.3 Verwendung von Klassentests und Splitting.- 5.2.6 Funktionsexpansion.- 5.2.7 Wertbasierte Analyse und Instanzvariablen-Optimierung..- 5.2.8 Profile-Informationen.- 5.2.9 Spezialisierte Varianten: Customization.- 5.2.10 Lookup- und Inline-Caches.- 6 Speicherbereinigung.- 6.1 Nicht-inkrementelle Techniken.- 6.1.1 Mark-Scan-Speicherbereinigung.- 6.1.2 Kopierende Speicherbereinigung.- 6.1.2.1 Kopierende Speicherbereinigung mit zwei Regionen.- 6.1.2.2 Kopierende Speicherbereinigung mit Generationen.- 6.2 Inkrementelle Techniken: Referenzzählende Algorithmen.- 7 Ausblick.- 7.1 Compiler-Entwicklung.- 7.1.1 Bootstrapping und Cross-Compiler.- 7.1.2 Compiler-Generatoren.- 7.2 Varianten von Compilern.- 7.2.1 Dynamische Recompilierung.- 7.2.2 Deutsch-Schiffman-Technik.- 7.2.3 Just-In-Time Compiler.- 7.2.4 Compiler und Programmkorrektheit.- 7.3 Hardware-Unterstützung.- 2: Praxis.- 8 Compilerbaupraktikum.- 9 Java — Die Programmiersprache.- 9.1 Java-Merkmale.- 9.2 Objekte in Java.- 9.3 Ausdrücke und Statements.- 9.4 Einschränkungen.- 9.5 Aufgaben.- 10 Das MAX-System.- 10.1 Eigenschaften.- 10.2 MAX-Spezifikationen.- 10.3 Ordnungssortierte Terme.- 10.4 Occurrence- bzw. Knotensorten.- 10.5 Muster.- 10.5.1 Sondersymbole in den Mustern.- 10.5.2 Mustersyntax.- 10.6 Attribute.- 10.7 Funktionen.- 10.8 Kontextbedingungen.- 10.9 Generierung eines Java-Übersetzers mit dem MAX-System.- 10.10 Aufgaben.- 11 Befehle der virtuellen Java-Maschine.- 11.1 Konstanten auf den Keller laden.- 11.2 Lokale Variablen auf den Keller laden.- 11.3 Speichern in eine lokale Variable.- 11.4 Manipulation des Kellers.- 11.5 Behandlung von Objekten.- 11.6 Arithmetische Befehle.- 11.7 Sprungbefehle.- 11.8 Methodenaufruf und Rücksprung.- 11.9 Überprüfung der Klassenzugehörigkeit.- 11.10 Erzeugung des JVM-Codes.- 12 Übersetzerspezifikation.- 12.1 Bindungsanalyse (Identifikation).- 12.1.1 Ziele der Bindungsanalyse.- 12.1.2 Bindungsanalyse für Java.- 12.1.3 Aufgaben.- 12.2 Typdeklarationen und Typisierung.- 12.2.1 Typdeklarationen.- 12.2.2 Typisierung von Ausdrücken.- 12.2.3 Aufgaben.- 12.3 MAX-Spezifikation der Klassendatei.- 12.3.1 Aufgaben.- 12.4 Ausdrücke und ihre Codeerzeugung.- 12.4.1 Wert eines Ausdrucks.- 12.4.2 Codeerzeugung für Ausdrücke.- 12.5 Statements und ihre Codeerzeugung.- 12.5.1 Statements.- 12.5.2 Code für Statements.- 12.5.3 Ausdrücke als Statements.- 12.5.4 Aufgaben.- 12.6 Methodendeklaration.- 12.6.1 Abstrakte Syntax.- 12.6.2 Methodeneinträge in die Klassendatei.- 12.6.3 Attributierung für Method@-Knoten.- 12.7 Kellerrahmen von Java-Methodeninkarnationen.- 12.8 Methodenaufruf.- 12.8.1 Abstrakte Syntax.- 12.8.2 Methodenreferenzeinträge im Konstantenpool.- 12.8.3 JVM-Code.- 12.8.4 Attributierung für MethodCall@-Knoten.- 12.8.5 Aufgaben.- 12.9 Vererbung.- 12.9.1 Vererbung in Java.- 12.9.2 Implementierung von Vererbung.- 12.9.3 Berücksichtigung der Vererbungshierarchie.- 12.9.4 Implementierung von super.- 12.9.5 Aufgaben.- 12.10 Ausgabeschnittstelle.- 12.10.1 Java-Klassen für print-Ausgaben.- 12.10.2 Code für print-Ausgaben.- 12.10.3 Aufgaben.- Anhang A: Klassenfile und Bytecode.- Anhang B: Java-Syntax.- Literatur.

Rubrieken

    Personen

      Trefwoorden

        Übersetzung objektorientierter Programmiersprachen