Direkte/indexierte Adressierun < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Hallo Forum, wir arbeiten derzeit mit dem MIPS R2000, bzw. mit dem SPIM Simulator dafür. Ich komme bei der Direkte/indexierte Adressierung leider nicht ganz mit. Folgendes ist der Programmcode:
.data
var: .word 20, 4, 22, 25, 7
#
.text
main: lw $t1, var
# $t1 enthaelt "20" (direkte Adr.)
lw $t1, var+4
# $t1 enthaelt "4" (direkte Adr.)
8 lw $t2, var($t1)
# $t2 enthaelt "4" (indexierte Adr.)
lw $t2, var+8($t1)
# $t2 enthaelt "25" (indexierte Adr.)
Die erste 20 scheint mir noch logisch, einfach an der ersten Adresse auslesen. Die 3 folgenden Werte sind mir da schon eher schleierhaft, könnt ihr mir zeigen, wie die zustandekommen?
Gruß
G-Hoernle
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:36 So 22.05.2011 | Autor: | G-Hoernle |
für die erste 4 würde mir was plausibles einfallen: ein wort hat 32 bit -> 4 byte. man ist also in der adresse 4 byte weiter gesprungen?
|
|
|
|
|
Hallo,
ein allgemeiner kleiner Tipp vorweg:
Zum Posten von Code eignet sich z.B. pastebin.com wesentlich besser, denn im Forum hier ist der Code nicht formatiert und die Dollarzeichen interpretiert der Parser als TEX-Code.
ADRMODE1.S
Beim Index geht man nicht nach dem Schema 0,1,2,3,... vor, sondern 0, 0+4, 0+4+4, ... .
Denn: "In a 32-bit architecture such as the MIPS R2000, words are 32 bits (4 bytes) in length. Addresses in main memory, registers and instructions are all 32 bits in length."
Bei der ersten Adressierung wird für den Wert der Marke das zero-Register mit dem Wert 0 verwendet. -> Indexposition 0
Bei der zweiten Adressierung verwendet man als Marke 0+4=4. -> Indexposition 1
Bei der dritten Adressierung hat man 0+4=4. -> Indexposition 1
Bei der letzten Adressierung hat man 0+8+4=12. -> Indexposition 3
Gruß
el_grecco
|
|
|
|
|
Hallo!
Auch hier im Forum kann man solchen Code eingeben, einfach in [code][/code] einschließen, dann wird hier nix interpretiert...
|
|
|
|