Übung 1.2

Benutzeravatar
derblub
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 7. Okt 2004 16:52
Kontaktdaten:

Übung 1.2

Beitrag von derblub »

moin ich nochmal...
da ich aufgabe 1 nun denk ich mal gelöst hab hier eine frage zu der 2ten

wie bekomm ich denn die speicheradresse 200 oder deren inhalt in ein register hab schon folgendes versucht jedoch ohne erfolg

Code: Alles auswählen

.text
main:
  li $s0, 200
  lw $t0 0($s0)
dabei kommt allerding diese fehlermeldung

Code: Alles auswählen

Exception occurred at PC=0x00400028
  Bad address in data/stack read: 0x000000c8
  Exception 7  [Bad data address]  occurred and ignored
hat jemand eine idee wie man das sonst lösen könnte?

janl
Neuling
Neuling
Beiträge: 1
Registriert: 3. Nov 2005 16:00
Kontaktdaten:

Re: Übung 1.2

Beitrag von janl »

derblub hat geschrieben:

Code: Alles auswählen

 lw $t0 0($s0)
Fehlt das Komma zwischen "$t0" und "0($s0)" auch in Deinem Original? Wenn nicht kann ich ich Dir auch nicht weiterhelfen, weil SPIM bei mir nicht läuft und ich die Aufgabe trocken gemacht habe. Allerdings sollte es "lb" statt "lw" sein, da Du einzelne Bytes umdrehen sollst, und "lw" gleich vier davon lädt.

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

Beitrag von Thorti »

Hallo,

erstmal: die Lösungen zu den Hausaufgaben solltet ihr bitte nicht hier im Forum posten. Das was da jetzt steht ist OK, aber mehr Code nicht, sonst muss ich leider eingreifen. Schließlich entscheiden die Punkte über den Schein und auch über die Endnote.

Zum Thema:
- die Kommata sind egal, das funzt auch ohne.
- der Fehler tritt bei mir nicht auf... Du musst wenn du das Programm mehrmals durchlaufen lassen willst immer erst auf "Simulator/Reload" gehen, sonst macht der oft Müll. Ev liegt es daran.

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
SM
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 167
Registriert: 10. Okt 2005 18:11
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von SM »

Naja, Du versuchst da ja, direkt die Adresse 200 anzusprechen - ich denke, SPIM kommt damit nicht klar, weil nichts an der Adresse steht (siehe .data bei SPIM).

Korrigiert mich, wenn ich falsch liege. :)

Das führt mich allerdings zu der Frage:

Muss das Programm aus der Hausübung direkt in SPIM-ausführbaren Code angegeben sein? Also mit .text und syscall am Ende?
~ Per aspera ad astra. ~

Bigge
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 26. Okt 2005 07:27
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Bigge »

Das würde mich allerdings auch interessieren. Zumal die SPIM-Sachen bei mir auch ohne .text Kram funktionieren... Lediglich das syscall bzw. jr muss da sein, sons gibts nen Fehler.

Das Problem mit dem Lesefehler tritt bei mir auch auf - er sagt er kann Adresse 200 nicht lesen (bzw. jede Adresse von 200 bis 299).

Gruß,
Bigge
Was ist weiß und versteckt sich hinter'm Baum?
- 'Ne schüchterne Milch!

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

Beitrag von Thorti »

Hallo,

hab das gerade nochmal ausprobiert - die Fehlermeldung kommt wohl daher, dass an Adresse 200 nix gelesen werden kann.
Nein, es muss kein komplett in SPIM ausführbarer Code sein, das Stück welches die Bytes umdreht reicht.

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

rick
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 105
Registriert: 17. Jan 2006 23:20

spim

Beitrag von rick »

Also die Speicheradresse 200 liegt bei mir in spim gar nicht im Data-Bereich. Bei mir geht der von [0x10000000] bis [0x10040000].

Wenn man also sein Programm in Spim testen will, muss man vor dem eigentlichen Tauschvorgang z.B. 10 Bytes in die Speicheradressen 0x10000000 bis 0x10000009 schreiben. Dann setzt man im Programm die Startadresse auf 0x10000000 und die Länge auf 10 und dann funktioniert es.

Benutzeravatar
derblub
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 7. Okt 2004 16:52
Kontaktdaten:

Beitrag von derblub »

ahh dann ist das ganze natürlich doch etwas leichter wenn das kein ausführbarer code in spim sein soll ..

baizon
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 19. Nov 2004 13:58
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von baizon »

lol!
ich denke hier über Schleifen nach damit der mir die Bytes hochzählt und dann lese ich hier (zum Glück) das es kein SPIM Code sein muss =)

P.S.
Hmm kann mir jemand einen Tipp geben wir man das mit der Länge der Worte (in der Aufgabe 100) lösen kann, sodas man auch mit einer Länge von 200 usw. arbeiten kann?
If you can't explain it simply, you don't understand it well enough. - A. Einstein

rick
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 105
Registriert: 17. Jan 2006 23:20

Beitrag von rick »

baizon hat geschrieben:ich denke hier über Schleifen nach damit der mir die Bytes hochzählt und dann lese ich hier (zum Glück) das es kein SPIM Code sein muss =)
naja:
Thorti hat geschrieben:Nein, es muss kein komplett in SPIM ausführbarer Code sein, das Stück welches die Bytes umdreht reicht.
also die Bytes musst du schon in SPIM-Code tauschen. Die Schleifen zum Zählen brauchste also doch :P

Zu der Frage:

Also speicher doch z.B. die Anzahl der Bytes am Anfang in nem Register womit du dann alles andere berechnest (je nachdem, wie du es löst). Diese Zahl kann man dann ja einfach im Code ändern.

baizon
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 19. Nov 2004 13:58
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von baizon »

Ah bin vor dem Post draufgekommen :-)
...aber trotzdem danke.
If you can't explain it simply, you don't understand it well enough. - A. Einstein

Antworten

Zurück zu „Archiv“