Praktikum online
Praktikum online
Hallo,
Die Praktikumsaufgabe sowie die Code-Rahmen sind auf der Homepage der Vorlesung verfügbar.
Viel Erfolg!
Gruss
Thorsten
Die Praktikumsaufgabe sowie die Code-Rahmen sind auf der Homepage der Vorlesung verfügbar.
Viel Erfolg!
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Praktikum online
Vielen Dank!
Teil 1
1 )wie ist es mit der Eingabe?
2) Ist das eine allgemeine Code oder schreiben wir nur eine geeignete Code, die mit dieser gegebene Matrix?

Teil 1
1 )wie ist es mit der Eingabe?
2) Ist das eine allgemeine Code oder schreiben wir nur eine geeignete Code, die mit dieser gegebene Matrix?
It's your ATTITUDE and not your APTITUDE that determines your ALTITUDE
Re: Praktikum online
Die Matrix und die Dimension soll im Code direkt stehen, siehe auch den Code-Rahmen.newizz hat geschrieben:1 )wie ist es mit der Eingabe?
Natürlich nicht nur für diesen Fall. Es sollen beliebige 3x3 und 4x4 Matrizen verarbeitet werden.2) Ist das eine allgemeine Code oder schreiben wir nur eine geeignete Code, die mit dieser gegebene Matrix?
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Praktikum online
Soo, mein Teil 1 kann jetzt Determinanten von beliebig großen Matrizen berechnen, Rekursion FTW...
Die Frage ist jetzt: Da der Code dadurch ziemlich komplex geworden ist (Verschachtelte Schleifen, Array auf Stack, etc.) ist es trotz Kommentar zu jedem Block schwer zu verstehen.
Kann ich zusätzlich zum asm einfach noch eine Datei mit Pseudo-Code (oder C-Code oder so) abgeben, die mein asm abbildet? So kann der korrigierende Tutor die beiden Sources parallel lesen, und Pseudo/C-Code ist meist leichter zu verstehen...
Die Frage ist jetzt: Da der Code dadurch ziemlich komplex geworden ist (Verschachtelte Schleifen, Array auf Stack, etc.) ist es trotz Kommentar zu jedem Block schwer zu verstehen.
Kann ich zusätzlich zum asm einfach noch eine Datei mit Pseudo-Code (oder C-Code oder so) abgeben, die mein asm abbildet? So kann der korrigierende Tutor die beiden Sources parallel lesen, und Pseudo/C-Code ist meist leichter zu verstehen...
~Stefan
Re: Praktikum online
Sehr schönkroimon hat geschrieben:Soo, mein Teil 1 kann jetzt Determinanten von beliebig großen Matrizen berechnen, Rekursion FTW...

Klar, ein C-Code als Erklärung ist sicher nicht verkehrt. Bitte den Code als Kommentar in die Assembler-Datei eintragen und beim Testat darauf hinweisen.Die Frage ist jetzt: Da der Code dadurch ziemlich komplex geworden ist (Verschachtelte Schleifen, Array auf Stack, etc.) ist es trotz Kommentar zu jedem Block schwer zu verstehen.
Kann ich zusätzlich zum asm einfach noch eine Datei mit Pseudo-Code (oder C-Code oder so) abgeben, die mein asm abbildet? So kann der korrigierende Tutor die beiden Sources parallel lesen, und Pseudo/C-Code ist meist leichter zu verstehen...
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Praktikum online
Ich habe nur mal ein Frage zum ersten Teil.
Ist die Determinante der 3x3 Matrize 4?
Es geht mir nur darum, ob ich die Matrize korrekt interpretiere
Ist die Determinante der 3x3 Matrize 4?
Code: Alles auswählen
matrix:
#3x3-Matrix
.word 3, 4, 5, 9, 4, 9, 1, 2, 2
Code: Alles auswählen
A=
(3, 4, 5)
(9, 4, 9)
(1, 2, 2)
Re: Praktikum online
JaGnomix hat geschrieben:Ist die Determinante der 3x3 Matrize 4?

Die Determinante der 4x4-Matrix ist übrigens -19.
Diese Seite hier ist übrigens sehr praktisch zum Testen und Überprüfen!
~Stefan
Re: Praktikum online
Wir haben uns auch mal an der rekrusiven Variante versucht, nachdem uns das andere zuviel Code erschien.
Im rekursiven Aufruf laden wir unsere Matrix (also bei einer 4x4 jeweils 4 mal eine 3x3 Matrix) in den Stack.
Dazu brauchen wir aber eine dynamische Positionsbestimmung wie hier:
lw $s1, $t0($sp) #aktuelles Element der 4x4 Matrix (beim ersten Aufruf) in s1 laden; in t0 ist der Offset ab dem $sp gespeichert
sw $s1, $t4($sp) #schreibe von s1 auf den Stack, in $t4 ist die position (also Offest vom $sp) dazu gespeichert
unser Problem ist, dass der MARS simulator das nicht akzepiert:
Error in det.s line 74 position 11: "$t0": operand is of incorrect type
Error in det.s line 75 position 11: "$t4": operand is of incorrect type
Ist es also generell nicht möglich, register als Offset zu verwenden? Wenn ja wie kann ich dann trotzdem meine Position dynamisch bestimmen?
Im rekursiven Aufruf laden wir unsere Matrix (also bei einer 4x4 jeweils 4 mal eine 3x3 Matrix) in den Stack.
Dazu brauchen wir aber eine dynamische Positionsbestimmung wie hier:
lw $s1, $t0($sp) #aktuelles Element der 4x4 Matrix (beim ersten Aufruf) in s1 laden; in t0 ist der Offset ab dem $sp gespeichert
sw $s1, $t4($sp) #schreibe von s1 auf den Stack, in $t4 ist die position (also Offest vom $sp) dazu gespeichert
unser Problem ist, dass der MARS simulator das nicht akzepiert:
Error in det.s line 74 position 11: "$t0": operand is of incorrect type
Error in det.s line 75 position 11: "$t4": operand is of incorrect type
Ist es also generell nicht möglich, register als Offset zu verwenden? Wenn ja wie kann ich dann trotzdem meine Position dynamisch bestimmen?
EiSE Tutor WS 12/13
Re: Praktikum online
lw $s1, $t0($sp)
geht so nicht. du braucht noch ein zwischnregister, um die adresse zu berechnen:
add $t1, $sp, $t0
lw $s1, 0($t1)
Edit: Register kannst du nicht als Offset verwenden, guck dir dazu mal das Format von I-Typ-Befehlen an (Kapitel 6 - Folie 35). Der Offset ist ein immediate-Wert.
geht so nicht. du braucht noch ein zwischnregister, um die adresse zu berechnen:
add $t1, $sp, $t0
lw $s1, 0($t1)
Edit: Register kannst du nicht als Offset verwenden, guck dir dazu mal das Format von I-Typ-Befehlen an (Kapitel 6 - Folie 35). Der Offset ist ein immediate-Wert.
~Stefan
Re: Praktikum online
@kroimon: Genau so gehts.
Erklärung: lw und sw sind Befehle mit dem I-Befehlsformat. Sie haben 2 Register (Zielregister und Offset) und eine 16Bit Konstante. Die Adresse berechnet sich dann aus der Summe der Konstante und des Offests aus dem Register. Eine direkt Angabe von 3 Registern ist beim lw und sw nicht möglich.
Gruss
Thorsten
Erklärung: lw und sw sind Befehle mit dem I-Befehlsformat. Sie haben 2 Register (Zielregister und Offset) und eine 16Bit Konstante. Die Adresse berechnet sich dann aus der Summe der Konstante und des Offests aus dem Register. Eine direkt Angabe von 3 Registern ist beim lw und sw nicht möglich.
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Praktikum online
Wie habe ich die Aufgabenstellung zum Mips-Programm jetzt zu verstehen?
Soll das Programm die Determinante von beliebig großen Matrizen berechnen oder nur von maximal 4x4?
Soll das Programm die Determinante von beliebig großen Matrizen berechnen oder nur von maximal 4x4?
Re: Praktikum online
In der Aufgabenstellung sind nur 3x3 und 4x4 Matrizen gefordert.M@rkus hat geschrieben:Soll das Programm die Determinante von beliebig großen Matrizen berechnen oder nur von maximal 4x4?
Allerdings ist meiner Meinung nach der Aufwand, das statisch zu machen, genauso groß wie der, das dynamisch für beliebige Matrizen zu lösen...
~Stefan
Re: Praktikum online
Ah okay, erstma danke für die antworten
Immo ist glaub ich noch ein Positionfehler drin, weil der Stackpointer größer wird als am Anfang
Da muss ich nochmal drüberschauen

Immo ist glaub ich noch ein Positionfehler drin, weil der Stackpointer größer wird als am Anfang
Da muss ich nochmal drüberschauen

EiSE Tutor WS 12/13
Re: Praktikum online
4x4 muss mindestens gehen.M@rkus hat geschrieben:Soll das Programm die Determinante von beliebig großen Matrizen berechnen oder nur von maximal 4x4?
Wenn man auch größere Matrizen verarbeiten kann, ist das natürlich noch schöner

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Praktikum online
Nope, die statische Variante bedurfte ca. 30 Minuten, det3 mit 26, det4 21 asm-Statements, ohne Schleifen, komplett unrolled.kroimon hat geschrieben:In der Aufgabenstellung sind nur 3x3 und 4x4 Matrizen gefordert.M@rkus hat geschrieben:Soll das Programm die Determinante von beliebig großen Matrizen berechnen oder nur von maximal 4x4?
Allerdings ist meiner Meinung nach der Aufwand, das statisch zu machen, genauso groß wie der, das dynamisch für beliebige Matrizen zu lösen...