Die Idee

Aus einem Programmtext in der Sprache MiniPython ist durch die beiden vorangegangenen Verarbeitungsschritte eine strukturierte Darstellung geworden.

MiniPython-Programm mit Struktur[1]

Zunächst wurden die kleinsten sinntragenden Einheiten, so genannte "Tokens" zunächst ausfindig gemacht. Sie sind hier als graue Kästen eingezeichnet. Danach wurden diese "Tokens" zu immer größeren Blöcken zusammengefasst wurden (orange Kästen). Diese verschachtelte Struktur bildet nun eine geeignete Grundlage, um einen Assembler-Code zusammenzusetzen. Die Grundidee dabei ist recht einfach:

Jeder Sorte von Block entspricht nun eine bestimmte Wirkungsweise:
  • Bei einer Zuweisung der Form VAR ZUW ZAHL muss die richtige Zahl an die Stelle im Speicher geschrieben wird, die der zugehörigen Variable entspricht.
  • Bei einer Bedingung der Form VAR GL NULL muss die entsprechende Variable mit dem Wert 0 verglichen werden und das Ergebnis des Vergleichs irgendwo im Speicher festgehalten werden.
  • Bei einer Fallunterscheidung der Form IF Bedingung DP Sequenz1 ELSE DP Sequenz2 END muss zunächst die Gültigkeit der Bedingung ausgeführt werden. Dann wird je nach Ergebnis (im Speicher) die erste oder die zweite Sequenz aufgerufen.
Bei der Erzeugung des Assembler-Codes wird nach dem Baukasten-System gearbeitet. Für jede Sorte von Block gibt es einen "Mustervorlage" mit den immer wieder vorkommenden Assembler-Befehlsfolgen. Diese Vorlagen werden an die konkreten Gegebenheiten angepasst (z.B. an die zu überprüfende Variable oder an die Länge von aufgerufenen Sequenzen) und dann zum gesamten Assembler-Code zusammengebaut.

Quellen

X

Fehler melden

X

Suche