Übers. von MIPS-A. in Hochspr. < Assembler < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:28 Mi 20.05.2009 | Autor: | RalU |
Aufgabe | Folgender MIPS-Assembler-Code soll in eine Hochsprache übersetzt werden.
[Dateianhang nicht öffentlich]
|
Ich habe versucht, den Assembler-Code in JAVA zu implementieren. (siehe Dateianhang)
[Dateianhang nicht öffentlich]
Allerdings, weiß ich nicht wie die Anweisung "mflo $t0" anpacken soll...
Was berechnet das Programm?
Wer kann mir da helfen?
Gruß, Ralf
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich] Anhang Nr. 2 (Typ: jpg) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:41 Do 21.05.2009 | Autor: | fabba |
Hmm grade stand noch 6 Stunden da, Browser aktualisiert und schon ist's überfällig, hmm. Falls von Interesse, hier mal trotzdem ne Antwort.
MULT packt die unteren 32 Bits des Ergebnisses ins LO, die oberen ins HI-Register.
MFLO $t0 lädt den Inhalt von LO nach t0, die innere Schleife sieht in Java also so aus:
int lo = (s0 * s1) & 0xffffffff;
int hi = (s0 * s1) >> 32;
int t0 = lo;
s0 = s0 + t0;
s1 = s1 + 1;
Das Programm berechnet also das Produkt aller Zahlen von 0 bis 10 untereinander. Kurz
int summe = 0;
for (int i = 0; i < 10; ++i)
for (int j = 0; j < 10; ++j)
summe += i * j;
Nachzulesen hier:
http://logos.cs.uic.edu/366/notes/MIPS%20Quick%20Tutorial.htm
PS: Bin mir nicht ganz sicher, wie Java intern rechnet, uU ist das 64-Bit Ergebnis für den schon zu groß, dann funktioniert die Bitspielerei nicht. Die Idee stimmt aber sonst.
|
|
|
|