带变量的MIPS偏移

Clo*_*9ne 4 variables mips offset

当我使用4字节偏移量加载变量时,如何将变量加载到数组中?

例如...如果我有C赋值语句:

B[8] = A[i] + A[j]

lw $t0, 4j($s6)    # load A[j] into $t0
lw $ti, 4i($s6)    # load A[i] into $t1
add $t0, $t0, $t1  # Register $t0 gets A[i] + A[j]
sw $t0, 32($s7)    # Stores A[i] + A[j] into B[8]
Run Code Online (Sandbox Code Playgroud)

这是对变量进行偏移的正确方法吗?4j和4i部分让我很困惑。

编辑:我和j有寄存器$ s3和$ s4,但我不知道如何使用

Car*_*rum 5

您已经很接近了,您只需要计算偏移量即可:

li $s2, 4         # put constant 4 in s2
multu $s2, $s3    # multiply s3 by 4
mflo $s3          # put multiplication result back in s3
multu $s2, $s4    # multiply s4 by 4
mflo $s4          # put multiplication result back in s4
add $s4, $s6, $s4 # s4 = pointer to A[j]
add $s3, $s6, $s3 # s3 = pointer to A[i]
lw $t0, ($s4)     # load A[j] into t0
lw $t1, ($s3)     # load A[i] into t1
add $t0, $t0, $t1 # t0 = A[j] + A[i]
sw $t0, 32($s7)   # B[8] = A[i] + A[j]
Run Code Online (Sandbox Code Playgroud)