ebook img

Übersetzung objektorientierter Programmiersprachen: Konzepte, abstrakte Maschinen und Praktikum „Java-Compiler“ PDF

289 Pages·1998·16.794 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Übersetzung objektorientierter Programmiersprachen: Konzepte, abstrakte Maschinen und Praktikum „Java-Compiler“

Springer-Lehrbuch Springer-Verlag Berlin Heidelberg GmbH Bernhard Bauer Riitta HöHerer Übersetzung objektorientierter Programmiersprachen Konzepte, abstrakte Maschinen und Praktikum "Java-Compiler" Mit 29 Abbildungen , Springer Dr. Bernhard Bauer Siemens AG, ZT IK 6 Otto-Hahn -Ring 6 D-81739 München Riitta HöHerer Technische Universität München Institut für Informatik Arcisstrasse 21 D-80290 München ISBN 978-3-540-64256-5 Die Deutsche Bibliothek - CIP-Einheitsaufnahme Bauer, Bernhard: Übersetzung objektorientierter Programmiersprachen: Konzepte, abstrakte Maschinen und Praktikum "Java-Compiler"! Bernhard Bauer; Riitta Höllerer Berlin; Heidelberg; New York; Barcelona; Budapest; Hongkong; London; Mailand; Paris; Singapur; Tokio: Springer (Springer-Lehrbuch) ISBN 978-3-540-64256-5 ISBN 978-3-642-58871-6 (eBook) DOI 10.1007/978-3-642-58871-6 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbe sondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbil dungen und Tabellen, der Funksendung, der Mikroverftlmung oder der Vervielfälti gung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der ge setzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Ur heberrechtsgesetzes. © Springer-Verlag Berlin Heidelberg 1998 Ursprünglich erschienen bei Springer-Verlag Berlin Heidelberg N ew Y ork 1998 Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne der Warenzeichen- und Markenschutzgesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: design & production GmbH, Heidelberg Satz: Reproduktionsfertige Vorlagen der Autoren SPIN: 10673211 45/3142 543210 Gedruckt auf säurefreiem Papier FurBarbara B.B. FurKarlheinz, Tuulikki, Erja R.N. Vorwort Indiesem Buchwerdenan Hand mehrererobjektorientierterProgrammiersprachen die Konzepte der Ubersetzung dieser Sprachklasse dargestellt. Am Beispiel der Sprache Java wird in einem Praxisteil die Spezifikation eines Ubersetzers entwik kelt.DieseSpezifikationkannalsEingabefUreinenUbersetzergeneratorverwendet werden,derdaraus ein ablauffahigesC-Programmgeneriert. Es werden zunachst die Konzepte objektorientierterProgrammiersprachen vor gestellt und sodann die Ubersetzung dieser Konzepte behandelt. Die Ubersetzung dieser Programmiersprachen erfolgt ublicherweise nicht direkt in die Maschinen sprache eines speziellen Prozessors, sondern in Code fur eine abstrakte Maschine. Dazu wird eine einfache, leistungsfahige abstrakte Maschine vorgestellt und an schlieBendwerdenErweiterungendiskutiert,diefUrdievirtuelleMaschinederPro grammiersprachen Smalltalk-80 und Java vorgenommen werden mussen. Da ob jektorientierteProgrammiersprachenaufdem Konzeptdes Nachrichtenaustausches basieren,sindsiebzgl.desLaufzeitverhaltensineffizienteralsherkommlicheproze durale Programmiersprachen. Deswegen werden Optimierungen in diesem Buch behandelt, die fUr objektorientierte Programmiersprachen moglich und notwendig sind, urn ahnlich gute Laufzeiten wie bei den prozeduralen Programmiersprachen zuerzielen.AbschlieBend wirdnocheinAusblickauferweiterteUbersetzungstech niken gegeben. DerzweiteTeil des Buches beschaftigtsich mitder konkreten Ubersetzung von Java,d.h. mitderPraxisdesUbersetzerbaus. Hierwird zunachstein Uberblicktiber die ProgrammierspracheJava und ihre virtuelleMaschinegegeben sowieeineEin fiihrungindenUbersetzergeneratorMAX. AnschlieBend wirddieUbersetzungspe zifiziert. Diese Spezifikation kann als Eingabe fUr das MAX-System verwendet werden. Esgeneriertdarausden C-Codeftir einen Compiler,derdie Programmier sprache Java in den Code fur die virtuelle Java-Maschine tibersetzt; insbesondere erzeugterdazuein Klassenfile. SUN, SUN Microsystems und Java sind Trademarks oder registrierte Trade marks vonSunMicrosystems,Inc. Smalltalk-80istTrademarkvon XeroxCorpora tion. Wir mochten uns an dieser Stelle bei Prof. Dr. Jurgen Eickel, Institut fUr Infor matik derTechnischen UniversitiitMunchen, bedanken, der es uns ermoglichthat, die Vorlesung "Ubersetzung objektorientierter Programmiersprachen" in Vertre- VIII Vorwort tung fur ihn zu halten. Diese Vorlesung und das darauf aufbauende Compilerbau PraktikumdientenalsGrundlagefUrdieses Buch. Daruber hinaus mOchten wir uns bei allen Mitarbeitern und ehemaligen Mitar beitern des Lehrstuhls Informatik II (prof. Eickel) der Technischen UniversiUit Munchen bedanken, die uns bei der Entstehung dieses Buches unterstutzt haben, insbesondere Hans Wittner, der durch die Rechnerbetreuung zum Gelingen des Praktikums beigetragen hat. Unser ehemaliger Kollege Prof. Dr. Arnd Poetzsch-Heffter hat maBgeblich zu dem EntwurfundderImplementierungdesMAX-Systems beigetragen. BesondersverpflichtetsindwirdenengagiertenStudierenden,diean derBetreu ungdesUbersetzerbaupraktikums,anderWeiterentwicklungderWerkzeugeundan der Implementierung von Mustercompilern mitgewirkt haben, sowie den Teilneh merndesPraktikumsdes Ubersetzerbaus im Sommersemester 1997 undderVorle sungen imWintersemester 1996/1997und 1997/1998.Besonderserwahnenm6ch ten wirAnnaFauser,RalfS. Engelschall,RolandHaratsch, Aurel Huber,Christian Lang,PeterMullerundBernhardWerner. AuBerdem danken wir dem Springer-Verlag, insbesondere Dr. Hans W6ssner undseinemTeam, furdieguteZusammenarbeit. Munchen,Juni 1998 BernhardBauer RiittaH61lerer Inhaltsverzeichnis Teil1: Theorie 1 Einleitung 3 1.1 Ubersetzung von Programmiersprachen 3 1.2 Objektorientiertheitundobjektorientierte Programmiersprachen 8 1.3 Reineund hybrideobjektorientierte Programmiersprachen 10 1.4 DieProgrammierspracheJava 11 1.5 Uberblick tiberdie weiteren Kapitel 11 2 Objektorientierte Konzepte 15 2.1 KlassenbasierteobjektorientierteSprachen 16 2.1.1 ObjekteundKlassen 16 2.1.2 Gleichheitund Kopieren vonObjekten 25 2.1.3 AbstrakteKlassen undInterface-Klassen 27 2.1.4 Multi-Methoden 28 2.2 Vererbung 29 2.2.1 Einfachvererbung 30 2.2.2 Mehrfachvererbung 42 2.2.3 DynamischeVererbung 46 2.3 Kapselung 46 2.4 ParametrisierungundgenerischeDatentypen 48 2.5 ParametrisierungversusVererbung 51 2.6 Polymorphismus 53 3 UbersetzungobjektorientierterKonzepte und abstrakte Maschinen 55 3.1 LoseUbersetzung 56 3.1.1 AbstrakteMaschineAM 57 3.1.1.1 Laufzeitumgebungderabstrakten MaschineAM .57 3.1.1.2 Befehlederabstrakten MaschineAM 59 3.1.1.3 Adressierungsarten 63 X Inhaltsverzeichnis 3.1.2 Klassen und Einfaehvererbung 64 3.1.3 Methodendeklarationen 65 3.1.4 Naehriehten undMethodenaufrufe 65 3.1.5 Objekte 67 3.1.6 SemiformaleBesehreibungderSemantik derabstrakten Masehine 70 3.2 Smalltalk-80-Realisierung 75 3.2.1 Klassen und Einfaehvererbung 77 3.2.2 Ubersetzung von Methoden 81 3.2.3 Objekte 84 3.2.4 Objektverwaltung 84 3.2.5 Methodenaufruf 87 3.2.6 DieabstrakteMasehinefUrSmalltalk-80 '" 88 3.3 Java-Realisierung 89 3.3.1 Klassen und einfaeheVererbung 90 3.3.1.1 Eintrageim Konstantenpool 92 3.3.1.2 EintrageftirInstanzvariablen 94 3.3.1.3 EintrageftirMethoden 95 3.3.1.4 Bemerkungen 96 3.3.2 Methodendeklarationen 96 3.3.3 Methodenaufrufund Rtieksprung 99 3.3.4 Objekte 100 3.3.5 DievirtuelleMasehine vonJava 100 3.4 C++-Realisierung. ..................................... 103 3.4.1 Methoden, Klassen undeinfaeheVererbung 103 3.4.2 Objekte 106 3.4.3 Methodenaufruf 107 3.4.4 Mehrfaehvererbung............................... 108 3.5 Parametrisierung... .................................... 112 3.5.1 KopierendeSieht 113 3.5.2 EehtegeneriseheSieht 121 4 Typinferenzund Typuberprufung 127 4.1 Typisierung und Binden ................................. 127 4.1.1 Typisierung 127 4.1.2 Binden undMethodensuehe 128 4.1.3 Zusammenhang von Typisierung undBinden 129 4.1.4 Typisierungsprobleme............................. 129 4.2 Typisierung mitDatenfluBanalyse .................... 130 4.2.1 DatenfluBanalyse 130 4.2.2 TypisierungmitDatenfluBanalyse 135 4.3 Typisierung mitConstraints .............................. 137 Inhaltsverzeichnis XI 5 Optimierungen 145 5.1 Standardoptimierungen 147 5.1.1 Elimination redundanterAusdriicke 147 5.1.2 Konstantenfaltung 148 5.1.3 Elimination toten Programmcodes 149 5.1.4 Kopien-Verbreitung 150 5.1.5 Schleifenoptimierungen 150 5.1.6 Reduktion des Operators und algebraische Umformungen .152 5.1.7 KontrollfluBoptimierungen 152 5.2 ObjektorientierteOptimierungen 152 5.2.1 Intraprozedurale Klassenanalyse 153 5.2.2 Analyseder Klassenhierarchie 154 5.2.3 EffizienteImplementierungderMethodensuche zurUbersetzungszeit 154 5.2.4 InkrementelleProgrammentwicklung und separateUbersetzung 155 5.2.5 Klassentest 155 5.2.5.1 Einfach-Klassentest 156 5.2.5.2 Unterklassentest 157 5.2.5.3 Verwendung von Klassentests undSplitting 158 5.2.6 Funktionsexpansion 160 5.2.7 Wertbasierte Analyse undInstanzvariablen-Optimierung .. 161 5.2.8 Profile-Informationen 162 5.2.9 SpezialisierteVarianten: Customization 162 5.2.10 Lookup- und Inline-Caches 163 6 Speicherbereinigung 165 6.1 Nicht-inkrementelleTechniken 166 6.1.1 Mark-Scan-Speicherbereinigung 166 6.1.2 KopierendeSpeicherbereinigung 167 6.1.2.1 KopierendeSpeicherbereinigung mitzweiRegionen 167 6.1.2.2 KopierendeSpeicherbereinigung mitGenerationen 170 6.2 InkrementelleTechniken: Referenzzahlende Algorithmen 172 7 Ausblick 175 7.1 Compiler-Entwicklung 175 7.1.1 BootstrappingundCross-Compiler 175 7.1.2 Compiler-Generatoren 176

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.