Fazit Hausaufgaben 1. Übungsblatt
Verfasst: 6. Nov 2006 22:51
Hallo,
nachdem nun alle die ersten Hausaufgaben abgegeben haben, hier mal eine Zusammenfassung der Korrektur (das bezieht sich nur auf die Ergebnisse meiner Gruppen, aber ich denke die typischen Fehler sind repräsentativ):
Aufgabe 1a)
Die meisten Studenten haben richtig erkannt, dass der Inhalt der Register vertauscht wird. Dann war noch ein Beweis gefordert. Richtig war hier eine Wahrheitstabelle mit allen Möglichkeiten oder der formale mathematische Beweis über das xor. Ein Beispiel (was ich leider oft gesehen habe) hingegen ist KEIN Beweis!
Aufgabe 1b)
Die Fakultätsfunktion wurde meist erkannt. Einige haben 5! angegeben, es ist jedoch 6!. Grund: Die Schleife läuft durch das branch_less_equal am Ende nochmal mit $t1 = 5 durch und wird im abschließenden Durchlauf nochmal um 1 erhöht.
Aufgabe 1c)
Hier haben die meisten richtig erkannt, dass $t0 mit 261 multipliziert wird.
Aufgabe 2
Zuerst mal ein allgemeiner Hinweis zum Programmieren (speziell in Assembler): Bitte kommentiert die Programme! Das ohne Kommentare nachzuvollziehen ist teilweise unmöglich. Leider haben viele daran gespart
. In Zukunft (und auch in der Klausur und im Praktikum) behalten wir uns vor unkommentierten Code nicht zu bewerten!
So, jetzt noch die typischen Fehler:
- es sollte Byteweise getauscht werden. lw und bw operieren auf ganzen Wörtern, hier muss lb und sb verwendet werden.
- die Ladebefehle haben eine spezielle Syntax: lb Register1 KONSTANTE(Register2). Hierbei wird der Inhalt des Speichers an Adresse (KONSTANTE "plus" Inhalt Register2) in das Register1 geschrieben. 2 Register zur Adressberechnung funktionieren nicht!
- die Schleifenbedingung wurde nicht immer korrekt geprüft. Immer darauf achten welche Register mit welchem Befehl an welcher Stelle geprüft werden sollen.
So, das wars von meiner Seite. Kommentare von eurer Seite (auch Kritik) könnt ihr hier gerne posten.
Gruss Thorti
nachdem nun alle die ersten Hausaufgaben abgegeben haben, hier mal eine Zusammenfassung der Korrektur (das bezieht sich nur auf die Ergebnisse meiner Gruppen, aber ich denke die typischen Fehler sind repräsentativ):
Aufgabe 1a)
Die meisten Studenten haben richtig erkannt, dass der Inhalt der Register vertauscht wird. Dann war noch ein Beweis gefordert. Richtig war hier eine Wahrheitstabelle mit allen Möglichkeiten oder der formale mathematische Beweis über das xor. Ein Beispiel (was ich leider oft gesehen habe) hingegen ist KEIN Beweis!
Aufgabe 1b)
Die Fakultätsfunktion wurde meist erkannt. Einige haben 5! angegeben, es ist jedoch 6!. Grund: Die Schleife läuft durch das branch_less_equal am Ende nochmal mit $t1 = 5 durch und wird im abschließenden Durchlauf nochmal um 1 erhöht.
Aufgabe 1c)
Hier haben die meisten richtig erkannt, dass $t0 mit 261 multipliziert wird.
Aufgabe 2
Zuerst mal ein allgemeiner Hinweis zum Programmieren (speziell in Assembler): Bitte kommentiert die Programme! Das ohne Kommentare nachzuvollziehen ist teilweise unmöglich. Leider haben viele daran gespart

So, jetzt noch die typischen Fehler:
- es sollte Byteweise getauscht werden. lw und bw operieren auf ganzen Wörtern, hier muss lb und sb verwendet werden.
- die Ladebefehle haben eine spezielle Syntax: lb Register1 KONSTANTE(Register2). Hierbei wird der Inhalt des Speichers an Adresse (KONSTANTE "plus" Inhalt Register2) in das Register1 geschrieben. 2 Register zur Adressberechnung funktionieren nicht!
- die Schleifenbedingung wurde nicht immer korrekt geprüft. Immer darauf achten welche Register mit welchem Befehl an welcher Stelle geprüft werden sollen.
So, das wars von meiner Seite. Kommentare von eurer Seite (auch Kritik) könnt ihr hier gerne posten.
Gruss Thorti