Вы на правильном пути.«Слово» - это 4 байта данных.
lw a, 4(b)
Эта инструкция загружает одно слово из адреса в b со смещением 4. Было бы целесообразно, чтобы по этому адресу была структура данных, подобная «массиву», но она не нужна.Зависит от того, чего вы хотите достичь.
Я приведу вам короткий пример:
.globl main
.data
array: .word 1, 2, 3, 4, 5, 6, # numbers
.text
main:
addi $t0, $0, 0 # p value in $t0
addi $t1, $0, 0 # array in $t1
la $t1, array # load array into $t1
lw $t0, 0($t1) # load first word into $t0 --> 1
lw $t0, 4($t1) # load second word into $t0 --> 2
addi $t1, $t1, 4 # increase address += 4
lw $t0, 0($t1) # load first word into $t0 --> 2
lw $t0, 4($t1) # load second word into $t0 --> 3
addi $v0, $0, 10 # load exit syscall
syscall
Допустим, массив начинается с примера адреса 1000, и мы загружаем этот адрес в $ t1, используяпсевдоинструкция ла.lw $t0, 0($t1)
загружает первое слово в $ t0 (загружает данные из примеров адресов 1000-1003).lw $t0, 4($t1)
загружает второе слово в $ t0 (загружает данные из примеров адресов 1004 - 1007).
Вы можете использовать http://spimsimulator.sourceforge.net/ для отладки программы.Он покажет вам, какой адрес на самом деле находится в б.
Надеюсь, это поможет.