• Keine Ergebnisse gefunden

Codeerzeugung – Teil 1 (24 Punkte) Erweitern Sie Ihren Compiler um Codeerzeugung gemäß der

N/A
N/A
Protected

Academic year: 2022

Aktie "Codeerzeugung – Teil 1 (24 Punkte) Erweitern Sie Ihren Compiler um Codeerzeugung gemäß der"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut für Systemsoftware Übungen zu Übersetzerbau WS 2011/2012

Prof. Dr. H. Mössenböck, DI M. Löberbauer, DI L. Stadler Übung 5

Letzter Abgabetermin: Mittwoch, 14.12.2011, 1800 Uhr

Codeerzeugung – Teil 1 (24 Punkte)

Erweitern Sie Ihren Compiler um Codeerzeugung gemäß der MicroJava-VM-Spezifikation, siehe VO-Skriptum Kapitel 5, Seiten 12-16. Die dafür nötigen Klassen Code und Operand befinden sich im Package ssw.mj.codegen.

Implementieren Sie in der Klasse Code die Methoden zur Ausgabe häufig verwendeter Code- Muster, zB: Laden von Werten sowie Zuweisungen. Vervollständigen Sie die Klasse Struct um die Methoden zur Typ-Kompatibilitäts-Prüfung, siehe VO-Skriptum, Kapitel 4.3, Seite 8. Die Klasse Operand ist bereits vollständig implementiert. Die Klasse Label benötigen Sie erst für die nächste Übung.

Zusätzlich befindet sich im Paket ein Decoder (Decoder.java), der Objektcode der MicroJava-VM in textueller Form ausgibt. Sie können ihn als Hilfsmittel verwenden, um Ihren erzeugten Objektcode zu überprüfen. Den generierten Code aus den JUnit-Testfällen können Sie ausgeben lassen wenn Sie das Feld Configuration.PRINT_DECODED_BYTE_CODE auf true setzen.

In diesem Teil der Codeerzeugung sollen S ie nur die Teile implementieren, die im VO-Skript bis einschließlich Folie 6.54 (Zuweisungen) beschrieben sind. Zusätzlich müssen für Methoden die Codes enter, exit und return ausgegeben werden. Folgende Felder im Codebuffer müssen gesetzt sein: dataSize, mainpc.

Den Code für Sprünge und Methoden-Aufrufe müssen Sie erst in Übung 6 implementieren.

Denken Sie daran, alle Kontextbedingungen, die Sie nun prüfen können, auch tatsächlich zu prüfen und entsprechende Fehlermeldungen auszugeben.

Abgabe und Hinweise

Die Abgabe der Übungen muss elektronisch erfolgen. Geben Sie folgende Dateien ab:

 Elektronisch in das Repository: Alle Quellcode-Dateien, die zum Ausführen des Compilers benötigt werden (Packages ssw.mj, ssw.mj.codegen und ssw.mj.symtab), also auch alle Klassen der Angabe. Die Verzeichnis-Struktur muss erhalten bleiben.

 svn://ssw.jku.at/2011W/UB/k<MatrNr>/branches/UE5

JUnit Testfälle: ScannerTest, ParserTest, SymbolTableTest, SimpleCodeGenerationTest

Verschoben auf Montag,19.12.2011

Referenzen

ÄHNLICHE DOKUMENTE

Skriptum  bis  einschließlich  Folie  6.54  (Zuweisungen)  beschrieben  sind,  d.h.  Sie  brauchen  noch  keinen  Code  für  Sprünge  und  Methoden 

Um  Sprünge  innerhalb  des  Codes  realisieren  zu  können,  sind  so  genannte  Labels  nötig,  also  Sprungmarken,  mit  denen  die  Ziele  der 

Implementieren Sie in der Klasse Code die Methoden zur Ausgabe häufig verwendeter Code- Muster, zB: Laden von Werten sowie Zuweisungen.. Vervollständigen Sie die

Ein Label verwaltet ein Sprungziel oder solange das Sprungziel unbekannt ist eine Liste von Sprüngen zu diesem Sprungziel (Fädelungsliste).. Vervollständigen Sie die Klasse

Ein Label verwaltet ein Sprungziel oder solange das Sprungziel unbekannt ist eine Liste von Sprüngen zu diesem Sprungziel.. Vervollständigen Sie die Klasse Label mit den Methoden

Ein Label verwaltet ein Sprungziel oder solange das Sprungziel unbekannt ist eine Liste von Sprüngen zu diesem Sprungziel.. Vervollständigen Sie die Klasse Label mit den Methoden

Den Code für Sprünge und Methoden-Aufrufe müssen Sie erst in Übung 6 implementieren.. Denken Sie daran, alle Kontextbedingungen, die Sie nun prüfen können, auch tatsächlich

Ein Label verwaltet ein Sprungziel oder solange das Sprungziel unbekannt ist eine Liste von Sprüngen zu diesem Sprungziel.. Vervollständigen Sie die Klasse Label mit den Methoden put()