MIPS Assembler, einen Byte laden: Adress out of bounds?

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

IxxxNIKITAxxxI 
Fragesteller
 17.12.2023, 21:49

habe ich schon, das passiert das gleiche

habe es extra so gefragt, damit es übersichtlicher ist

0
IxxxNIKITAxxxI 
Fragesteller
 17.12.2023, 21:51

wieso hast du la benutzt?

0
GeneralAnal01  17.12.2023, 21:54
@IxxxNIKITAxxxI

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

0
IxxxNIKITAxxxI 
Fragesteller
 17.12.2023, 21:55
@GeneralAnal01

la ladet die adresse nicht das wort meinte ich

mit diesem programm bekomme ich genau den selben fehler :(

0
GeneralAnal01  17.12.2023, 21:57
@IxxxNIKITAxxxI

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

0
IxxxNIKITAxxxI 
Fragesteller
 17.12.2023, 21:59
@GeneralAnal01

kommt der gleiche fehler, ach egal, ich frage morgen meinen professor

danke für deine hilfe

0
ruhrgur  17.12.2023, 22:11
@IxxxNIKITAxxxI

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)
1
IxxxNIKITAxxxI 
Fragesteller
 18.12.2023, 21:17

das hat tatsächlich funktioniert, war ein software problem, danke

0