Augabe 11.3 Fehler im Binärcode???
Augabe 11.3 Fehler im Binärcode???
Hi,
ich habe in Zeile 3 (0x00400008) als rs 4 raus, was $a0 wäre.
Allerdings wird außer in dieser zeile das register nicht verwendet und es ergäbe sich soweit ich das sehe eine endlosschleife.
Ist das korrekt???
ich habe in Zeile 3 (0x00400008) als rs 4 raus, was $a0 wäre.
Allerdings wird außer in dieser zeile das register nicht verwendet und es ergäbe sich soweit ich das sehe eine endlosschleife.
Ist das korrekt???
Re: Augabe 11.3 Fehler im Binärcode???
Korrekt.Thorbur hat geschrieben:ich habe in Zeile 3 (0x00400008) als rs 4 raus, was $a0 wäre.
Nicht korrekt.Allerdings wird außer in dieser zeile das register nicht verwendet und es ergäbe sich soweit ich das sehe eine endlosschleife.
Ist das korrekt???
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Augabe 11.3 Fehler im Binärcode???
Okay hatte mich in einer Zeile vertan - so kams zu ner endlosschleife.
Allerdings würde ich gern wissen ob man $a0 einfach mal so als gesetzt annehmen soll?
Ist ja schließlich für Prozdurparameter gedacht...
Allerdings würde ich gern wissen ob man $a0 einfach mal so als gesetzt annehmen soll?
Ist ja schließlich für Prozdurparameter gedacht...
Re: Augabe 11.3 Fehler im Binärcode???
Guten Morgen,
Gruss
Thorsten
Ja, und das ist eine Unterprozedur, der Eingabeparameter wird in $a0 erwartet.Thorbur hat geschrieben:Allerdings würde ich gern wissen ob man $a0 einfach mal so als gesetzt annehmen soll?
Ist ja schließlich für Prozdurparameter gedacht...
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Augabe 11.3 Fehler im Binärcode???
In der Zeile 0x004000100 in der gleichen Übung müsste es add $t0,$t0,$t1 heißen, oder?
Re: Augabe 11.3 Fehler im Binärcode???
Ja, da ist mir das $t wohl untergegangen.
Gruss
Thorsten
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Augabe 11.3 Fehler im Binärcode???
In der Lösung ist dieser Code für die Schleife angegeben:
0x00400008 0x0089502a #loop: slt $t2, $a0, $t1
0x0040000c 0x15400003 # bne $t2, $a0, finish
0x00400010 0x01094020 # add $t0, $t0, $t1
0x00400014 0x21290002 # addi $t1, $t1, 2
0x00400018 0x08100002 # j loop
0x0040001c 0x01001020 #finish: add $v0, $t0, $zero
mein Problem ist das Fett makierte. Wenn ich das richtig sehe, wird bei >slt $t2, $a0, $t1< $t2 auf 0 oder 1 gesetzt, womit $t2 niemals gleich $a0 sein kann. Müsste es nicht >bne $t2, 0, finish< heißen? Oder handelt slt anders als ich denke?
Bitte um Aufklärung
0x00400008 0x0089502a #loop: slt $t2, $a0, $t1
0x0040000c 0x15400003 # bne $t2, $a0, finish
0x00400010 0x01094020 # add $t0, $t0, $t1
0x00400014 0x21290002 # addi $t1, $t1, 2
0x00400018 0x08100002 # j loop
0x0040001c 0x01001020 #finish: add $v0, $t0, $zero
mein Problem ist das Fett makierte. Wenn ich das richtig sehe, wird bei >slt $t2, $a0, $t1< $t2 auf 0 oder 1 gesetzt, womit $t2 niemals gleich $a0 sein kann. Müsste es nicht >bne $t2, 0, finish< heißen? Oder handelt slt anders als ich denke?
Bitte um Aufklärung
Re: Augabe 11.3 Fehler im Binärcode???
Ja, das ist falsch
Wenn man den HEX-Wert umrechnet kommt man auch auf $zero statt $a0.
Gruss
Thorsten

Wenn man den HEX-Wert umrechnet kommt man auch auf $zero statt $a0.
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12
Re: Augabe 11.3 Fehler im Binärcode???
Hallo,
ich verstehe die 4.Zeile mit dem bne-Befehl nicht. Wenn ich den 16 Bits-teil des Befehls extrahiere, kommt ja 0x0003 raus. Aber es wird ja zu Adresse 0x0040001c gesprungen. Wie berechnet man das eigentlich?
ich verstehe die 4.Zeile mit dem bne-Befehl nicht. Wenn ich den 16 Bits-teil des Befehls extrahiere, kommt ja 0x0003 raus. Aber es wird ja zu Adresse 0x0040001c gesprungen. Wie berechnet man das eigentlich?
-
- Nerd
- Beiträge: 555
- Registriert: 19. Okt 2006 14:41
- Wohnort: Darmstadt / Alzenau
- Kontaktdaten:
Re: Augabe 11.3 Fehler im Binärcode???
Da es sich um einen Branchbefehl handelt, welcher im Grunde ein adressenrelativer Sprung ist, wird wie folgt gerechnet:
PC <= (PC+4)+(Imm << 2)
Beim Jumpbefehl hingegen berechnet sich der neue PC wie folgt:
PC <= {(PC+4)[31:28],(label << 2)}
PC <= (PC+4)+(Imm << 2)
Beim Jumpbefehl hingegen berechnet sich der neue PC wie folgt:
PC <= {(PC+4)[31:28],(label << 2)}
Re: Augabe 11.3 Fehler im Binärcode???
Ich hätte nochmal ne Frage zur 11.4.
In der MuLö steht
reg [31:0] RAM[31:0];
Aber es sollen nur 32 Registern sein. Sind das hier nicht 2^32 register?
Müsste es nicht viel mehr
reg [31:0] RAM[4:0]
heißen? Oder hab ich den Reg-Befehl nicht ganz verstanden?
In der MuLö steht
reg [31:0] RAM[31:0];
Aber es sollen nur 32 Registern sein. Sind das hier nicht 2^32 register?
Müsste es nicht viel mehr
reg [31:0] RAM[4:0]
heißen? Oder hab ich den Reg-Befehl nicht ganz verstanden?
Re: Augabe 11.3 Fehler im Binärcode???
Das sind 32 Register zu je 32 Bit.Firehouse hat geschrieben:reg [31:0] RAM[31:0];
Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12