Hola,
ich habe ein Problem mit der neuen tollen Aufgabe. Und zwar weiss ich nicht genau in welchen Registern die Uebergabeparameter (typ ist float) der Main Methode stehen. Liege ich falsch in der Annahme das es sich dabei um das Register %o0 handelt?
schon mal vielen Dank im Vorraus
Christian
Edit: Und auch hier wieder: Mit T3, bzw. das entsprechende Fach mit Zyklusnummer in der Überschrift angeben.
Ich kenn zwar die Aufgabe noch nicht, aber wenn es ein float ist, liegts ganz bestimmt nicht in %o0, denn da passen nur 32-bit-Integer rein.
Ein Float-Ergebnis landet in %f0, ein double in %f0, %f1. (s.a. Das kleine Sparc-Heft Seite 49ff)
Und zwar weiss ich nicht genau in welchen Registern die Uebergabeparameter (typ ist float) der Main Methode stehen.
Float ist kein Typ (glaub ich). Single ist einer, Double ist einer. Und wir sollen double benutzen.
Liege ich falsch in der Annahme das es sich dabei um das Register %o0 handelt?
Wenn Du kein save ausfuehrst, liegt der double Parameter in %o0 (hi) und %o1 (lo). Ansonsten natuerlich in %i0 und %i1. Die Werte musst Du in den Speicher kopieren und von dort aus dann in die FP Register (einen direkten Transferbefehl Integer Register -> FP Register gibt es leider nicht).
Der Rueckgabewert wird in %f0 / %f1 erwartet, unabhaengig davon ob Du ein save benutzt oder nicht (die FP Register sind ja auch unabhaengig vom verwendeten Fenster, also quasi global).
Ach ja noch ein Tip: achte auf das fett geschriebene Wort auf dem Aufgabenzettel [img]
http://www.fb18.de/gfx/25.gif[/img]
Ich kenn zwar die Aufgabe noch nicht, aber wenn es ein float ist, liegts ganz bestimmt nicht in %o0, denn da passen nur 32-bit-Integer rein.
Was ist ein float? Gibts das wirklich?
naja in c schon…ich habe es benutzt…float ist eine flieskommazahl…
christian
naja in c schon…ich habe es benutzt…float ist eine flieskommazahl…
christian
dann ist das wohl das gleiche wie ein single?
eine frage:
bei mir funktioniert der Aufruf von C-Funktion pow(doublezahl, 1.0/3.0);
was soll ich da beachten?
ich habe #include <math.h> gemacht, aber noch immmer fehlermeldung "undefined .. symbol", liegt das wo anders?
interessant dass das nicht geht, hab hier ne seite gefunden:
http://www.cs.bu.edu/help/unix/compiling_with_the_math_library.htmlstatt 'cc datei.c' soll man demnach 'cc datei.c -lm' eingeben..
Und hat das "-lm" was gebracht? Würde mich ja mal interessieren…..
na ich würds ja nicht schreiben ohne vorher zu testen,
ja geht auch mit cc
zumindest ist die symbol reference in ordnung, ergebnisse hab ich nicht geschaut ;)
Und hat das "-lm" was gebracht? Würde mich ja mal interessieren…..
höchstwahrscheinlich wird die Mathematik-Funktionsbibliothek dazugelinkt, also die Funktionen in das Programm eingebunden [img]
http://www.fb18.de/gfx/28.gif[/img] Da pow() wohl dazugehört, ist das notwendig, weil die Funktionsimplementation sonst fehlt :)
was ist denn der unterschied zu printf, da ist das ja nicht nötig..
bei mir funktioniert der Aufruf von C-Funktion pow(doublezahl, 1.0/3.0);
Ist doch wunderbar, wenns funktioniert [img]
http://www.fb18.de/gfx/7.gif[/img]
was ist denn der unterschied zu printf, da ist das ja nicht nötig..
printf ist Teil der Standard-library, die wie der Name schon sagt Standard ist und die Bibliotheken enthält, die quasi in jedem C-Programm benutzt werden. wenn man die NICHT haben will muss man cc das auch extra sagen, dass er die bloß rauslassen soll. Alle anderen bibliotheken muss man per -lname reinpacken und da die Mathe-Bibliothek anscheinend nicht so oft genutzt wird, gehört die nicht zur Standardbibliothek und man muss -lm dazupacken.
Ich bin mir nicht ganz sicher, wie ich eine float-Zahl in ein f-Register bekomme. Der Parameter liegt doch zu Anfang in %i0, wenn ich ein neues Fenster aufmache. Den packe ich dann per "st" in [%sp+68] oder so. Und dann ld [%sp+68], %f0. Aber… wo ist denn jetzt der Unterschied dazu, als wenn ich das ganze einfach mit mov %i0, %f0 mache? Ich weiß, dass das nicht funktioniert, aber ich weiß nicht warum.
Ach.. oder liegt ein einzelner Parameter, wenn er double ist, einfach in zwei Registern, also %i0 und %i1 ?
Ich bin mir nicht ganz sicher, wie ich eine float-Zahl in ein f-Register bekomme. Der Parameter liegt doch zu Anfang in %i0, wenn ich ein neues Fenster aufmache. Den packe ich dann per "st" in [%sp+68] oder so. Und dann ld [%sp+68], %f0.
Fuer Single Zahlen macht man es genau so.
Aber… wo ist denn jetzt der Unterschied dazu, als wenn ich das ganze einfach mit mov %i0, %f0 mache? Ich weiß, dass das nicht funktioniert, aber ich weiß nicht warum.
Weil es diesen Befehl nicht gibt. Sparc ist eben RISC (reduced instruction set… oehm wofuer steht das C? :)
Ach.. oder liegt ein einzelner Parameter, wenn er double ist, einfach in zwei Registern, also %i0 und %i1 ?
Genau so ist es!
Danke
(reduced instruction set… oehm wofuer steht das C? :)
…computing. Hat da etwa jemand bei Lehmann nicht aufgepasst? [img]
http://www.fb18.de/gfx/7.gif[/img]
JA. Du, du Pappnase. Deine Selbstgespräche sind echt nützlich [img]
http://www.fb18.de/gfx/10.gif[/img]
Argl!
Wer das alles liest und versteht, um den Aufgabenzettel zu machen, hat meinen vollen Respekt!
Argl!
Wer das alles liest und versteht, um den Aufgabenzettel zu machen, hat meinen vollen Respekt!
Meinen auch [img]
http://www.fb18.de/gfx/7.gif[/img]
Als Lösungsansatz für die Leute die noch dran sitzen die gewünschet Funktion als C-Code (war ne mühselige Sucherei das ausm Netz zu finden….)
double newtonRaphson(double x) {
double y, dx, old;
y = x / 3;
do {
old = y;
dx = x - (y * y * y);
y = y + dx / (3 * y * y);
} while (y != old);
return y;
}
Viel Spaß noch [img]
http://www.fb18.de/gfx/28.gif[/img]
Erwähnte ich, dass ich Assembler voll doof finde? [img]
http://www.fb18.de/gfx/22.gif[/img]
Erwähnte ich, dass ich Assembler voll doof finde? [img]http://www.fb18.de/gfx/22.gif[/img]
<glaubenskriegmode>
Assembeler ist nicht doof
</glaubenskríegmode>
[img]
http://www.fb18.de/gfx/28.gif[/img]
Erwähnte ich, dass ich Assembler voll doof finde? [img]http://www.fb18.de/gfx/22.gif[/img]
Starte doch eine entsprechende Umfrage [img]
http://www.fb18.de/gfx/25.gif[/img]
Hey Fred, wie weit biste heute beim T3 Praktikum gekommen? Aufgabe 5 kurz vor Hanoi war das höchste der Gefühle…. is irgendwie echt zuviel für die Zeit, findeste nicht auch? [img]
http://www.fb18.de/gfx/20.gif[/img]
AssemblerAssembler ist..…voll doof!…'n bischen doof!…mir doch egal!…gar nicht doof!…echt supi…smaragtgrün!
Umfrage nur für registrierte Besucher!Antworten zu 'Assembler ist..':…voll doof!: [img]
http://www.sternenvolk.de/rapid/graphics/r7.gif[/img]
…'n bischen doof!: [img]
http://www.sternenvolk.de/rapid/graphics/y2.gif[/img]
…mir doch egal!: [img]
http://www.sternenvolk.de/rapid/graphics/b1.gif[/img]
…gar nicht doof!: [img]
http://www.sternenvolk.de/rapid/graphics/m2.gif[/img]
…echt supi: [img]
http://www.sternenvolk.de/rapid/graphics/c5.gif[/img]
…smaragtgrün!: [img]
http://www.sternenvolk.de/rapid/graphics/g1.gif[/img]
[img]
http://www.fb18.de/gfx/15.gif[/img]
Hey Fred, wie weit biste heute beim T3 Praktikum gekommen?
Wir haben die Hanoi Aufgabe gerade rechtzeitig um 15:59 beendet [img]
http://www.fb18.de/gfx/7.gif[/img]
Aufgabe 5 kurz vor Hanoi war das höchste der Gefühle…. is irgendwie echt zuviel für die Zeit, findeste nicht auch? [img]http://www.fb18.de/gfx/20.gif[/img]
Bisher haben wir noch keinen Zettel komplett geschafft. Ich denke mal, die Zettel sind extra ein bischen groesser, damit alle 3 Stunden lang was zu tun haben. Denn in weniger als 3 Stunden sind die auf keinen Fall schaffbar (es sei denn, man hat sich zuhause extrem gut vorbereitet, d.h. alles schon aufgeschrieben).
Und die Konzentration kann natuerlich schon mal nachlassen, wenn man sich in einem Raum mit Manfred's Assistentin befindet [img]
http://www.fb18.de/gfx/23.gif[/img]
Aufgabe 5 kurz vor Hanoi war das höchste der Gefühle…. is irgendwie echt zuviel für die Zeit, findeste nicht auch? [img]http://www.fb18.de/gfx/20.gif[/img]
Bisher haben wir noch keinen Zettel komplett geschafft. Ich denke mal, die Zettel sind extra ein bischen groesser, damit alle 3 Stunden lang was zu tun haben. Denn in weniger als 3 Stunden sind die auf keinen Fall schaffbar (es sei denn, man hat sich zuhause extrem gut vorbereitet, d.h. alles schon aufgeschrieben).
Ist auch denke ich ein bisschen Absicht. Hanoi ist ja wie bekannt das Scheinkriterium. Es wird nicht erwartet, dass man im 4ten Teil sonderlich weit kommt (sonst hätten die mal die Bugs da beseitigt ;). Von daher denke ich schon, dass die Zettel absichtlich etwas größer sind, damit im Prinzip jeder in 4 Sitzungen die 3 ersten Zettel schafft, und wer schneller ist soll sich halt noch mitm 4ten Zettel befassen
Alsooo, um mich mal wieder umbeliebt zu machen… ich hab bis ich mit dem 3. Zettel fertig war gedacht, dass wir alle schaffen müssen.
Ehrlich gesagt bereite ich sowas aus Prinzip NIE vorher vor, dementsprechend gross ist die anfängliche Verwirrung. Aber ich habs bisher immer geschafft, die Zettel kurz vor Ende der Zeit fertig zu kriegen, auch wenn die Assemblerlistings nicht nur Züllighoven das Wasser in die Augen getrieben hätten!?! [img]
http://www.fb18.de/gfx/15.gif[/img] (Copy&Paste, keine Kommentare, Registerwahl nach Zufallsprinzip, kein systematisches Vorgehen sondern Try&Error-Prinzip)
Und was noch erstaunlicher ist: ES GEHT IMMER WIEDER!!! [img]
http://www.fb18.de/gfx/17.gif[/img]
Und die Konzentration kann natuerlich schon mal nachlassen, wenn man sich in einem Raum mit Manfred's Assistentin befindet [img]http://www.fb18.de/gfx/23.gif[/img]
Ajo. Mit der hatte ich zwischendrin eine kleine Grundlagen-Konversation [img]
http://www.fb18.de/gfx/10.gif[/img] Ne, mal im Ernst… die hat echt was drauf, was T angeht. Respekt….