Я пытаюсь перевести из C эту строку кода вложенного массива p=A[B[6]]
, которую я нашел в книге, из которой я изучаю MIPS.Потому что я почти уверен, что решение из книги неверно или, по крайней мере, намного сложнее, чем нужно.
Базовый адрес массива A [] хранится в регистре $ s1базовый адрес B [] хранится в $ s2, а значение g хранится в $ s0.
Мой перевод p=A[B[6]]
будет (скажите, пожалуйста, правильно ли):
lw $t0, 24($s2) #load from memory B[6] in the register $t0
sll $t0, $t0, 2 #$t0=$t0*4
add $t0, $t0, $s1 #add to $t0 the address of A[B[6]]
lw $t0, 0($t0) #$t0=A[B[6]]
Хотя вместо этого книга (которая полна других ошибок) предлагает следующее решение:
addi $t0, $0, 6
sll sll $t0, $t0 2
add $t1, $s2, $t0
lw $t2, 0 ($t1)
sll $t2, $t2 2
add $t3, $s1, $t2
lw $s0, 0 ($t3)
Верен ли мой код или книга верна?