Итак, я пытаюсь перевести этот код сборки MIPS на C. Я смущен некоторой частью того, что происходит. Вот код сборки MIPS: предположим, что мы имеем переменные f, g, h, i, j, хранящиеся в $ s0, $ s1, $ s2, $ s3 и $ s4 соответственно. Предположим, что базовые адреса массивов A и B находятся в $ s6 и $ s7 соответственно, и они содержат 4 байтовых слова. Я добавил комментарии, чтобы показать, что я понимаю большую часть этого.MIPS Assembly to C
sll $t0, $s0, 2 # $t0 = f * 4
add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1 = g * 4
add $t1, $s7, $t1 # $t1 = &B[g]
lw $s0, 0($t0) # f = A[f]
addi $t2, $t0, 4 <-- Here's where I am confused. Since $t0 contains the address of A[f], what does adding 4 do to that?
lw $t0, 0($t2)
add $t0, $t0, $s0
sw $t0, 0($t1)