Augabe 11.3 Fehler im Binärcode???

Thorbur
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 28. Sep 2009 16:04

Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorbur » 20. Jan 2010 22:48

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???

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

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorti » 21. Jan 2010 09:00

Thorbur hat geschrieben:ich habe in Zeile 3 (0x00400008) als rs 4 raus, was $a0 wäre.
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???
Nicht korrekt.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Thorbur
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 28. Sep 2009 16:04

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorbur » 22. Jan 2010 02:10

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...

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

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorti » 22. Jan 2010 06:40

Guten Morgen,
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...
Ja, und das ist eine Unterprozedur, der Eingabeparameter wird in $a0 erwartet.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
igor.a
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 143
Registriert: 28. Sep 2009 16:05

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von igor.a » 29. Jan 2010 16:00

In der Zeile 0x004000100 in der gleichen Übung müsste es add $t0,$t0,$t1 heißen, oder?

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

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorti » 29. Jan 2010 16:13

Ja, da ist mir das $t wohl untergegangen.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Firehouse
Mausschubser
Mausschubser
Beiträge: 84
Registriert: 15. Dez 2009 14:56

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Firehouse » 5. Feb 2010 09:56

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

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

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorti » 5. Feb 2010 10:10

Ja, das ist falsch :oops:
Wenn man den HEX-Wert umrechnet kommt man auch auf $zero statt $a0.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Benutzeravatar
Bal10cuk
Windoof-User
Windoof-User
Beiträge: 40
Registriert: 3. Jun 2009 10:26

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Bal10cuk » 7. Feb 2010 15:48

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?

Mspringer
Nerd
Nerd
Beiträge: 555
Registriert: 19. Okt 2006 14:41
Wohnort: Darmstadt / Alzenau
Kontaktdaten:

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Mspringer » 7. Feb 2010 17:24

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)}

Firehouse
Mausschubser
Mausschubser
Beiträge: 84
Registriert: 15. Dez 2009 14:56

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Firehouse » 8. Feb 2010 18:00

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?

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

Re: Augabe 11.3 Fehler im Binärcode???

Beitrag von Thorti » 8. Feb 2010 18:04

Firehouse hat geschrieben:reg [31:0] RAM[31:0];
Das sind 32 Register zu je 32 Bit.

Gruss
Thorsten
Assistent zur Vorlesung TGDI im WS 11/12

Antworten

Zurück zu „Archiv“