MIPS Assembler, einen Byte laden: Adress out of bounds?
Hallo, folgendes Problem; ich speicher ein Wort und möchte den ersten Byte auslesen:
.data ##
.text
.globl main
main:
li $s0, 0x1234abcd
lb $s1,0x00($s0)
Aus s0 soll er geladen werden, in diesem Fall d, aber ich bekomme diesen Fehler:
Runtime exception at 0x00400008: address out of range 0x1234abd1
Überall im Internet ist der gleiche Code, wieso funktioniert er bei mir nicht?
1 Antwort
probiere mal das:
.data
word_to_read: .word 0x1234abcd
.text
.globl main
main:
la $s0, word_to_read
lb $s1, 0($s0)
# Jetzt ist der Wert in $s1 der erste Byte des Wortes in word_to_read
habe ich schon, das passiert das gleiche
habe es extra so gefragt, damit es übersichtlicher ist
warum nicht. Probier mal folgendes:
.data
.text
.globl main
main:
li $s0, 0x1234abcd
lb $s1, 0($s0)
# Jetzt ist der Wert in $s1 das erste Byte an der Adresse 0x1234abcd
la ladet die adresse nicht das wort meinte ich
mit diesem programm bekomme ich genau den selben fehler :(
Alle guten Dinge sind 3: .data
.text
.globl main
main:
li $s0, 0x1234abcd
lb $s1, 0($s0)
# Jetzt ist der Wert in $s1 das erste Byte an der Adresse 0x1234abcd
kommt der gleiche fehler, ach egal, ich frage morgen meinen professor
danke für deine hilfe
Assembler ist leider nicht mein Fachgebiet, deswegen schreibe ich auch keine eigene Antwort sondern werfe das hier nur einmal als Kommentar mit ein:
.data
.text
.globl main
main:
li $s0, 0x1234abcd
andi $s0, $s0, 0xFFFFFFF8
lb $s1, 0x00($s0)
das hat tatsächlich funktioniert, war ein software problem, danke
wieso hast du la benutzt?