H3.1 SRLV

MuldeR
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 131
Registriert: 18. Okt 2005 16:14
Wohnort: (d)armstadt
Kontaktdaten:

H3.1 SRLV

Beitrag von MuldeR »

ACHTUNG: Die Definitionen von des SRLV Befehls unterscheiden sich zwischen dem SPIM Tutorial und dem PDF, das nur den Befehlssatz enthält.

Einmal heißt es: Rd = R1 div 2^R2
Das andere mal dagegen: Rd = R1 div 2^(R2 mod 32)

Wer versucht die aufgabe nach def1 zu lösen (ohne das mod), wird in einer Endlosschleife hängen bleiben!
Das mod, das wohl irgendjemand für unwichtig hielt, ist hier leider entscheident!

Benutzeravatar
Báka
Windoof-User
Windoof-User
Beiträge: 30
Registriert: 16. Feb 2006 15:47
Wohnort: Odenwald || DA

Beitrag von Báka »

hmmm.ich hab auch ne endlosschleife....
sowohl ,wenn ich das program auf papier ausführe,
als acuh,
wenn ich spim laufen lasse........
heißt es,dass spim srlv auch anders asuführt?
hab die mod32 definition benutzt...
[align=center]
Bild
Bild
[/align]

MuldeR
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 131
Registriert: 18. Okt 2005 16:14
Wohnort: (d)armstadt
Kontaktdaten:

Beitrag von MuldeR »

Wenn du mod32 machst, dann teilst du durch 2^0 ansatt 2^64 (also du teilst durch 1 bzw. es passiert grad gar nix)
Somit auch keine Endlosschleife...

Vllt hast du vorher noch en Fehler drin ???

Benutzeravatar
Báka
Windoof-User
Windoof-User
Beiträge: 30
Registriert: 16. Feb 2006 15:47
Wohnort: Odenwald || DA

Beitrag von Báka »

tja daran lags auch,
bei mir war halt 64mod32 immer 2 und nicht 0 :P
aber es ändert nichts an der tatsache,
dass wenn ich das program am pc ausführe,
es trotzdem ne endlosschleife gibt oO
wenn ich das prog schritt für schritt ausführe.
sind die beiden t register irgendwannmal wieder bei 8 und 4.....
[align=center]
Bild
Bild
[/align]

Benutzeravatar
dEeP-fRiEd
Kernelcompilierer
Kernelcompilierer
Beiträge: 432
Registriert: 19. Okt 2005 00:58
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von dEeP-fRiEd »

Hm also bei mir läuft das in PCSPIM auch nicht korreckt, allerdings keine Endlosschleife sondern er will eine Consolen eingabe und meckert dann
"Attempt to execute non-instruction at 0x00400070"

Ich glaub das Problem ist, dass der Syscall am Ende des Progs Müll ist, denn der erwartet ja einen Paramter in v0 (für exit 10)

Hab das syscall mal mit jr $ra ersetzt. Dann läuft er durch.
Komischerweise steht in v0 am Ende sogarein a (was ja Hex für 10 ist), also hätte es eigentlich durch laufen müssen.... komisch o.O

edit: Ah, achtung, wenn ein Programm beendet wird steht in v0 immer die 10 (für den exit call) und das ist aber nicht das Ergebnis von der a ;)
NOSCE TE IPSUM
visit: http://www.flicknetwork.net.tc

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

Beitrag von Thorti »

Hallo,

also eine Endlosschleife sollte eigentlich nicht herauskommen. Bzw kommt drauf an was ihr als Endlosschleife anseht.
Das mod muss mit den 32 gerechnet werden.
Der Syscall am Ende ist so schon korrekt.

Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
E.d.u.
Nerd
Nerd
Beiträge: 633
Registriert: 3. Feb 2004 17:01
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von E.d.u. »

sehr interessant, also beim "normalen" srl wird auch mod benutzt .. d.h. wenn ich links um 64 shifte, passiert nix? srl $t0, 64
Ich haette gesagt $t0 wird dann 0, aber scheint genau wie frueher zu bleiben :)

Benutzeravatar
dEeP-fRiEd
Kernelcompilierer
Kernelcompilierer
Beiträge: 432
Registriert: 19. Okt 2005 00:58
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von dEeP-fRiEd »

ja weil ein shift um 64 mod 32 ist ja ein shift um 0 also bleibt die zahl wie sie ist!
NOSCE TE IPSUM
visit: http://www.flicknetwork.net.tc

arke
Erstie
Erstie
Beiträge: 21
Registriert: 13. Feb 2006 13:12

Beitrag von arke »

Hah, endlich hab ich kapiert was es macht

Wirklich fies :D

Antworten

Zurück zu „Archiv“