Arbeitsbereich Programmiersprachen Foren-Übersicht
Autor Nachricht

<  Archiv WS 2010/2011  ~  Registerkonflikte in PRINT, HALLOCATE

konrada
Verfasst am: 01 Feb 2011 15:24 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
In Blatt 6 werdet Ihr PRINT und HALLOCATE auf Systemcalls des SPIM-Interpreters abbilden. Dabei stelle ich gerade fest, dass man fuer PRINT und HALLOCATE die Register v0 und a0 braucht.

Wenn Ihr eh mit vorgefaerbten Temps bei CALL arbeitet, gehts ganz analog: PRINT und HALLOCATE erwarten ihren Parameter in a0 und definieren a0 und v0.
Das spart in ex6 Umwege.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lamborgotti
Verfasst am: 01 Feb 2011 23:30 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
also sollen wir immer
print v0
in unserem kanga stehen haben?
und davon ausgehen, dass es a0 und v0 überschreibt
was ist mit dem aktuellen interpreter, der macht das aber nicht oder?
Benutzer-Profile anzeigen Private Nachricht senden
konrada
Verfasst am: 02 Feb 2011 9:39 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
Etwas weiter ausholend: Syscalls macht man in SPIM, indem man v0 mit der Nummer des Syscalls und a0 mit dem ersten Parameter des Syscalls belegt und dann das "syscall"-Statement ausfuehrt.

Fuer HALLOC braucht man die Groesse in a0, fuer PRINT die Zahl. In beiden Faellen kann nachher a0 ueberschrieben sein.

(EDIT)

Und das Ergebnis von HALLOC findet man in v0.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lamborgotti
Verfasst am: 02 Feb 2011 11:28 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
also sollen wir es doppelt moppeln
also anstatt dass da

move s2 halloc s1

stehtmuss daraus

move a0 s1
move v0 halloc s1
move s2 v0

werden ?
Benutzer-Profile anzeigen Private Nachricht senden
konrada
Verfasst am: 02 Feb 2011 11:32 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
Ja, entweder jetzt -- oder in ex6.

Ihr koennt auch die Moves in ex6 generieren; dann muesst Ihr aber sicherstellen, dass v0 und a0 nicht live sind.

In der Testsuite ist Kanga-Code, der HALLOC und PRINT enthaelt und in dem a0 und v0 nicht ueber ein PRINT oder HALLOC hinweg live sind.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lamborgotti
Verfasst am: 02 Feb 2011 11:35 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
naja ich werde es wohl gleich machen, zumal ja jetzt noch ne woche ist, und das sind ja nur 3 zeilen code extra. das einzige ist halt, dass die testsuit das nicht testen wird weil die fürht den kanga code ja normal aus
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:  

Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.

Gehe zu:  

Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.