CB1: Interpreter kennt keine HW-Register

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

CB1: Interpreter kennt keine HW-Register
Hallo.
Beim testen der Registervergabe von Projektübung 5 findet
der Python Serializer kein Hardware-Register. Die Hilfsfunktion getVar() wirft immer
eine Exception folgender Art:

KeyError: '%rax'

Wenn ich mir den Code so ansehe scheint es, dass das zuständige Dictionary
nie mit Hardware Registern gefüllt wird. Ledigliche mit lokalen Variablen, Parametern
und virtuellen Registern der Funktion.
Oder übersehe ich da etwas grundlegendes?

Lg Christian


Oder sollen wir das erweitern? Also die Ausgabe des Serializers anpassen,
sodass die Hardware Register mit aufgelistet werden?


Meine Lösung für das Problem war es aus den Hardware Registern einfach globale IRVariables zu machen. Man muss dann dem IRProgram natürlich mitteilen, dass sie existieren, aber dann kann man das ganze testen.


Stimmt das geht als vorläufiger Workaround.


Die Hardware-Register zu “globalen Variablen” zu machen, halte ich auch für einen sinnvollen Fix (denn im Endeffekt sind sie das ja; mit “lokalen Variablen” geht es kaputt, weil dann jede Funktion eigene Kopien hätte). Das Testen mit dem Interpreter ist nur für euch selbst, wir werden erst wieder den fuenften und letzten Meilenstein testen (dann aber ohne Interpreter).