Praktikum online

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Praktikum online

Beitrag von Thorti »

Hallo,

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

Benutzeravatar
newizz
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 209
Registriert: 30. Jun 2009 16:41

Re: Praktikum online

Beitrag von newizz »

Vielen Dank! :D
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

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: Praktikum online

Beitrag von Thorti »

newizz hat geschrieben:1 )wie ist es mit der Eingabe?
Die Matrix und die Dimension soll im Code direkt stehen, siehe auch den Code-Rahmen.
2) Ist das eine allgemeine Code oder schreiben wir nur eine geeignete Code, die mit dieser gegebene Matrix?
Natürlich nicht nur für diesen Fall. Es sollen beliebige 3x3 und 4x4 Matrizen verarbeitet werden.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
kroimon
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Okt 2009 00:12

Re: Praktikum online

Beitrag von kroimon »

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...
~Stefan

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: Praktikum online

Beitrag von Thorti »

kroimon hat geschrieben:Soo, mein Teil 1 kann jetzt Determinanten von beliebig großen Matrizen berechnen, Rekursion FTW...
Sehr schön 8)
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...
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.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
Gnomix
Computerversteher
Computerversteher
Beiträge: 306
Registriert: 31. Okt 2005 08:44

Re: Praktikum online

Beitrag von Gnomix »

Ich habe nur mal ein Frage zum ersten Teil.
Ist die Determinante der 3x3 Matrize 4?

Code: Alles auswählen

matrix:
#3x3-Matrix
.word 3, 4, 5, 9, 4, 9, 1, 2, 2
Es geht mir nur darum, ob ich die Matrize korrekt interpretiere

Code: Alles auswählen

A=
(3, 4, 5)
(9, 4, 9)
(1, 2, 2)

Benutzeravatar
kroimon
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Okt 2009 00:12

Re: Praktikum online

Beitrag von kroimon »

Gnomix hat geschrieben:Ist die Determinante der 3x3 Matrize 4?
Ja :-)
Die Determinante der 4x4-Matrix ist übrigens -19.

Diese Seite hier ist übrigens sehr praktisch zum Testen und Überprüfen!
~Stefan

jack_90
Mausschubser
Mausschubser
Beiträge: 75
Registriert: 29. Sep 2009 22:38
Wohnort: Darmstadt
Kontaktdaten:

Re: Praktikum online

Beitrag von jack_90 »

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?
EiSE Tutor WS 12/13

Benutzeravatar
kroimon
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Okt 2009 00:12

Re: Praktikum online

Beitrag von kroimon »

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.
~Stefan

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: Praktikum online

Beitrag von Thorti »

@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
Assistent zur Vorlesung TGDI im WS 11/12

M@rkus
Windoof-User
Windoof-User
Beiträge: 27
Registriert: 28. Sep 2009 16:30

Re: Praktikum online

Beitrag von M@rkus »

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?

Benutzeravatar
kroimon
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Okt 2009 00:12

Re: Praktikum online

Beitrag von kroimon »

M@rkus hat geschrieben:Soll das Programm die Determinante von beliebig großen Matrizen berechnen oder nur von maximal 4x4?
In der Aufgabenstellung sind nur 3x3 und 4x4 Matrizen gefordert.
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

jack_90
Mausschubser
Mausschubser
Beiträge: 75
Registriert: 29. Sep 2009 22:38
Wohnort: Darmstadt
Kontaktdaten:

Re: Praktikum online

Beitrag von jack_90 »

Ah okay, erstma danke für die antworten 8)
Immo ist glaub ich noch ein Positionfehler drin, weil der Stackpointer größer wird als am Anfang
Da muss ich nochmal drüberschauen :roll:
EiSE Tutor WS 12/13

Thorti
BSc Spammer
BSc Spammer
Beiträge: 1047
Registriert: 1. Dez 2003 11:52
Wohnort: Frankfurt
Kontaktdaten:

Re: Praktikum online

Beitrag von Thorti »

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

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
crib
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 17. Apr 2008 14:43
Wohnort: Wiesbaden

Re: Praktikum online

Beitrag von crib »

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

Antworten

Zurück zu „Archiv“