Praktikum 2 - Eingabe

Benutzeravatar
jan_k
Mausschubser
Mausschubser
Beiträge: 66
Registriert: 7. Jul 2009 15:39
Kontaktdaten:

Praktikum 2 - Eingabe

Beitrag von jan_k »

Hallo,

ich bin mir nicht so ganz sicher was beim zweiten Praktikum wie implementiert werden soll.

Es werden insgesamt drei Algorithmen aufgeführt von denen die letzten beiden offenbar zusammengehören.

Als Eingabe wird laut Aufgabenstellung eine Gleitkommazahl mit doppelter Genauigkeit erwartet. Gilt das dann auch von den Heron-Algorithmus? Also soll die gleiche Gleitkommazahl durch beide Verfahren gehauen werden? Das Heron-Verfahren sieht nämlich stark nach Integereingaben aus.

Daniel Mäurer
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 12. Okt 2009 14:18

Re: Praktikum 2 - Eingabe

Beitrag von Daniel Mäurer »

Lesen Sie die Aufgabenstellung einfach noch einmal.

Benutzeravatar
jan_k
Mausschubser
Mausschubser
Beiträge: 66
Registriert: 7. Jul 2009 15:39
Kontaktdaten:

Re: Praktikum 2 - Eingabe

Beitrag von jan_k »

Falls noch jemand Verständnisprobleme mit der Aufgabenstellung hat:

http://www.student.informatik.tu-darmst ... /pa2-2.pdf

Ähnliche Aufgabe (nicht identisch :!: ) und meiner Meinung nach etwas klarer formuliert.

xarfai
Mausschubser
Mausschubser
Beiträge: 69
Registriert: 14. Okt 2008 00:08

Re: Praktikum 2 - Eingabe

Beitrag von xarfai »

Mir ist die Aufabenstellung auch nach mehrerem Durchlesen noch unklar. Ich verstehe wie diese beiden Algos funktionieren, aber was ist mit "Unterprogrammen" gemeint? Sollen das zwei Dateien sein wo in jeder mit dem selben Programmrahmen ein einer der beiden Verfahren angewandt wird? Oder soll alles in einer Datei und mit Syscall am Anfang eine Auswahl welches Verfahren benutzt werden soll? oder soll man die irgendwie kombiniert anwenden?

Kleiner Tipp bitte, mir ist schon klar wie ich die Verfahren jedes für sich implementieren würde, aber ich hab einfach keine Ahnung wie das fertige Programm aussehen soll.

Daniel Mäurer
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 12. Okt 2009 14:18

Re: Praktikum 2 - Eingabe

Beitrag von Daniel Mäurer »

Schreiben Sie ein Programm das eine Zahl (z.B. 42.0) einliest und in etwa folgende Ausgabe macht:
"Die Wurzel von 42.0 ist:
Heron: 6,4989234753745973453908475019435
Binsearch: 6,8910345982173459"

Daniel Mäurer
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 12. Okt 2009 14:18

Re: Praktikum 2 - Eingabe

Beitrag von Daniel Mäurer »

Ein Unterprogramm ist ja nur eine Marke, deren nachfolgender Code irgendwelche Werte in Übergaberegistern erwartet.

Benutzeravatar
jan_k
Mausschubser
Mausschubser
Beiträge: 66
Registriert: 7. Jul 2009 15:39
Kontaktdaten:

Re: Praktikum 2 - Eingabe

Beitrag von jan_k »

Daniel Mäurer hat geschrieben:Schreiben Sie ein Programm das eine Zahl (z.B. 42.0) einliest und in etwa folgende Ausgabe macht:
"Die Wurzel von 42.0 ist:
Heron: 6,4989234753745973453908475019435
Binsearch: 6,8910345982173459"
Vielen Dank :) Das macht es klar

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Praktikum 2 - Eingabe

Beitrag von s!mon »

Wie lade ich denn immediate Werte in die $fX Register? Ich bekomme die Fehlermeldung "li.d directive cannot appear in text segment". Ich scheine also irgendwie auf fp-Operationen umschalten zu müssen oder wie geht das? Im Netz habe ich jetzt nur .set gefunden aber das scheint MARS zu ignorieren?!

LucasR
Kernelcompilierer
Kernelcompilierer
Beiträge: 474
Registriert: 9. Jun 2009 09:55

Re: Praktikum 2 - Eingabe

Beitrag von LucasR »

Im Mars musst du dir die Werte in einen normalen Register schieben und dann mit mtc1 verschieben.

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Praktikum 2 - Eingabe

Beitrag von s!mon »

abbruch: .double 0.001
l.d $f10, abbruch

Funktioniert anscheinend auch. Dürfen wir das so benutzen? Reicht 10^-3 als Abbruchbedingung?

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Praktikum 2 - Eingabe

Beitrag von Demmi »

Code: Alles auswählen

mtc1 $t0, $f12
cvt.s.w $f12, $f12
Packt den Inhalt von $t0 in $f12 und wandelt dann das WORD in ne FP-Zahl um.

Ansonsten kann man noch FP-Werte vorher definieren:

Code: Alles auswählen

.data
pi: .float 3.1415
.text
l.s $f2, pi	
Achja, wenns double sein soll, einfach .d für die jeweiligen Befehle nehmen.
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

Telefonjoker
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 161
Registriert: 19. Apr 2008 21:02

Re: Praktikum 2 - Eingabe

Beitrag von Telefonjoker »

Ich verstehe aber nicht, warum li.s nicht funktioniert. Ist doch in der Literatur überall so angegeben.
Und add.s $f0, $zero, $f0 funktioniert auch nicht.

Ich hau das ganze Ding gleich..!!! :mrgreen: nein, nur Spaß. Würd mich aber echt mal interessieren, warum das nicht geht. Liegt's an Mars?

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Praktikum 2 - Eingabe

Beitrag von Demmi »

li.s ist in MARS schlicht nicht vorhanden, wenn ich mich recht erinnere. Warum auch immer. Ich weiß auch nicht ob das Hilfsblatt oder MARS da nicht ganz standard-konform ist.
Auf jeden Fall funktionieren alle Befehle, die in der MARS-Hilfe (F1 drücken) stehen. Da findet man eigtl. auch immer was ;)
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

LucasR
Kernelcompilierer
Kernelcompilierer
Beiträge: 474
Registriert: 9. Jun 2009 09:55

Re: Praktikum 2 - Eingabe

Beitrag von LucasR »

Demmi hat geschrieben:li.s ist in MARS schlicht nicht vorhanden, wenn ich mich recht erinnere. Warum auch immer. Ich weiß auch nicht ob das Hilfsblatt oder MARS da nicht ganz standard-konform ist.
Auf jeden Fall funktionieren alle Befehle, die in der MARS-Hilfe (F1 drücken) stehen. Da findet man eigtl. auch immer was ;)
Meines Wissens nach gibt es die Befehle in MIPS2000 durchaus, aber halt nicht im MARS Simulator. Wer auch immer das Hilfsblatt erstellt hat, hat da wohl in dem Moment nicht dran gedacht :)

ivoch
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 199
Registriert: 3. Mär 2004 10:51

Re: Praktikum 2 - Eingabe

Beitrag von ivoch »

LucasR hat geschrieben:Meines Wissens nach gibt es die Befehle in MIPS2000 durchaus, aber halt nicht im MARS Simulator. Wer auch immer das Hilfsblatt erstellt hat, hat da wohl in dem Moment nicht dran gedacht :)
Die Befehle gibts eben nicht in MIPS2000 und deswegen MUSS sie der MARS auch nicht unterstützen ;). Ein MIPS Prozessor kennt nur die Hardware-Befehle (die mit dem Sternchen auf dem MIPS-Blatt) - alle anderen sind Pseudobefehle, die vom Compiler/Simulator einfach in Hardware-Befehle umgewandelt werden. Schreibt doch ein ganz kurzes Programm im MARS, das nichts anderes macht als z.B. einen Wert per li in einem Register zu laden, oder per bgt/bge/ble/usw einen Branch ausführt. Kompiliert das Programm dann per F3 und schaut euch wie sich das tatsächlich an dem "Prozessor" übergebene Programm von eurem unterscheidet (zu sehen im "Execute"-Tab, oben links im Textsegment). Versucht insbesondere auch einen (kleinen, <65536) Wert per addi (was ein Hardware-Befehl ist!) in einem Register zu laden, dann einen größeren Wert, z.B. 500000 auch per addi in einem anderen Register zu laden und schaut euch was der MARS aus beiden Befehlen macht.

Die Pseudobefehle sind schön und erleichtern uns die Arbeit recht viel, ihr solltet euch aber nicht einfach darauf verlassen, sondern sich im Klaren sein, wie sie sich von den Hardware-Befehlen unterscheiden und was die Beschränkungen der letzteren sind.

Ansonsten, schaut euch auch den Beitrag von Demmi an.

Antworten

Zurück zu „Archiv“