当我使用 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]
这是为变量进行偏移的正确方法吗? 4j 和 4i 部分是我真正困惑的地方。
编辑:i和j有寄存器$s3和$s4,但我不知道如何使用
最佳答案
你已经非常接近了,你只需要计算偏移量:
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]
关于variables - MIPS 与变量的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18908353/