Hausuebung 1 Aufgabe 2
- Nacht-Schatten
- Neuling
- Beiträge: 8
- Registriert: 28. Okt 2007 18:03
- Wohnort: Mühlheim
- Kontaktdaten:
Hausuebung 1 Aufgabe 2
Gude,
Hausuebung 1 Aufgabe 2 Zeile 10
->lb $t3 , 0( $t1)
Was bewirkt dieser Befehl?
Laut Beschreibung wird der Speicherinhalt geladen.
Dieser ist aber unbekannt.
Hat jemand eine gloreiche Idee?
Hausuebung 1 Aufgabe 2 Zeile 10
->lb $t3 , 0( $t1)
Was bewirkt dieser Befehl?
Laut Beschreibung wird der Speicherinhalt geladen.
Dieser ist aber unbekannt.
Hat jemand eine gloreiche Idee?
Re: Hausuebung 1 Aufgabe 2
Hallo,
Gruss Thorti
Genau. Es wird der Inhalt der an der Adresse 0+$t1 steht in das Register $t3 geladen.Nacht-Schatten hat geschrieben:->lb $t3 , 0( $t1)
Was bewirkt dieser Befehl?
Laut Beschreibung wird der Speicherinhalt geladen.
Wieso?Dieser ist aber unbekannt.

Schau dir nochmal das ganze Programm an.Hat jemand eine gloreiche Idee?
Gruss Thorti
Assistent zur Vorlesung TGDI im WS 11/12
-
- Mausschubser
- Beiträge: 78
- Registriert: 4. Nov 2006 22:19
Ich hätte mal ne allgemeine Frage zu dieser Aufgabe. Funktioniert dieses Programm überhaupt bzw macht es überhaupt Sinn?
Schau ich mir alleine die Zeilen 5-7 an weis ich nicht was ich davon halten soll.
#die Addr. des Strings wird in $t0 geladen, ist klar
#wieso sollte man nun die Addr. bitweise mit 0 verodern zumal die Addr. nur aus Schmodder besteht mit dem nur der Assembler was anfangen kann
#jetzt kommts noch doller und der Quatsch den wir eben gerade berechnet haben wird noch mit xor verwurschtelt. Wie auch immer bei mir ist nach der Ausführung $v0 immer und zu jeder Zeit "0"
Ich glaube ich habe hier ein allgemeines Verständnissproblem. Kann mich mal jemand aufklären?
Schau ich mir alleine die Zeilen 5-7 an weis ich nicht was ich davon halten soll.
Code: Alles auswählen
5 la $t0, str
Code: Alles auswählen
6 or $t1, $t0, $zero
Code: Alles auswählen
7 xor $v0, $t0, $t1
Ich glaube ich habe hier ein allgemeines Verständnissproblem. Kann mich mal jemand aufklären?
- MisterD123
- Geek
- Beiträge: 811
- Registriert: 31. Okt 2006 20:04
- Wohnort: Weiterstadt
-
- Mausschubser
- Beiträge: 78
- Registriert: 4. Nov 2006 22:19
-
- Sonntagsinformatiker
- Beiträge: 245
- Registriert: 13. Apr 2004 19:23
- Wohnort: Darmstadt
- Kontaktdaten:
Ja, es funktioniert, und ja, es ist sinnvoll.Trusterrer hat geschrieben:Ich hätte mal ne allgemeine Frage zu dieser Aufgabe. Funktioniert dieses Programm überhaupt bzw macht es überhaupt Sinn?
Was kommt denn dabei raus, wenn man das so macht? Man möchte den Inhalt von $t0 nach $t1 bringen. Eine direkte Zuweisung gibt es aber nicht als Hardware-Opcode, also muss man sich anders behelfen. Zwar ist "move" ein Pseudobefehl, der das macht, aber auch er wird als eine Verknüpfung mit $zero umgesetzt. (Beim Mars scheinbar als "addu $t1, $zero, $t0".)#wieso sollte man nun die Addr. bitweise mit 0 verodern zumal die Addr. nur aus Schmodder besteht mit dem nur der Assembler was anfangen kannCode: Alles auswählen
6 or $t1, $t0, $zero
Das ist zugegebenermaßen etwas unorthodox, aber auch hier zählt, was am Ende rauskommt. Auf Assemblerebene muss man etwas tricksen und Befehle zweckentfremden, um kleinen und schnellen Code zu bekommen. Hier ging es darum, ein "li" zu vermeiden, das nämlich in zwei Opcodes umgesetzt wird. Klar geht das auch anders, aber ist es so "schlechter"?#jetzt kommts noch doller und der Quatsch den wir eben gerade berechnet haben wird noch mit xor verwurschtelt.Code: Alles auswählen
7 xor $v0, $t0, $t1
Wenn man das Programm tatsächlich bis zum Schluss durchgerechnet hat, sollte klar geworden sein, was der Sinn davon ist. Dann weiß man auch, was für andere Eingabedaten herauskäme. (Das ist mit der Frage d gemeint.)Wie auch immer bei mir ist nach der Ausführung $v0 immer und zu jeder Zeit "0"
Ich hatte da schon was raus. Kann es sein, dass $v0 eine Flag-Funktion hatte? 
und im 1. Teil ist $v0 natürlich immer 0
/edit: ja sorry, mir is dann auch eingefallen, dass Abgabe erst am Montag ist

und im 1. Teil ist $v0 natürlich immer 0
/edit: ja sorry, mir is dann auch eingefallen, dass Abgabe erst am Montag ist

Zuletzt geändert von banshee am 3. Nov 2007 11:37, insgesamt 1-mal geändert.
Noch mal zur ursprünglichen Frage, was der Load-byte-Befehl bewirkt, ich glaube, mir ist es noch nicht ganz klar. Mal angenommen, der Wert des Registers sei bekannt, zB $t0 = 111_2. Was würde dann lb $t3, 0($t1) bewirken? Oder hat das gar nichts mit dem Wert, der da drin steht zu tun? :-/ Also, die 2b) könnt ich wahrscheinlich hinschreiben, kann ja nur ein Wert drin stehen, wenns keine Endlosschleife werden soll, aber ich möcht halt gerne verstehen, warum...
-
- Sonntagsinformatiker
- Beiträge: 245
- Registriert: 13. Apr 2004 19:23
- Wohnort: Darmstadt
- Kontaktdaten:
Wenn in $t1 der Wert 111_2 stünde, dann würde durch lb $t3, 0($t1) ein Byte von der Speicheradresse 0 + 111_2 = 7 geladen und in $t3 abgespeichert werden. Mit $t0 hat das nichts zu tun.jno hat geschrieben:Mal angenommen, der Wert des Registers sei bekannt, zB $t0 = 111_2. Was würde dann lb $t3, 0($t1) bewirken?