1

我有一个关于 MIPS 的一些关于我感到困惑的数组的符号的快速问题。

假设我在 $t0 中有一个值。它可以是任何东西,我们会说 3。

我想要做的是将数组中存储在该索引处的值(保存在 $t0 中的值)增加 1。

是正确的符号:addi array($t0), array($t0), 1

或者是:addi $t0($s7), $t0($s7), 1 #assuming the array has been loaded into register $s7

例如,如果 $t0 中有 3,那么我想将 array[3] 的值增加 1。

4

1 回答 1

1

MIPS 是一种加载/存储架构,因此您必须将值加载到寄存器中,将其递增,然后将其存储回来:

sll $t1, $t0, 2     # $t1 = index * sizeof(word)
add $t1, $s7, $t1   # $t1 = &array[index]
lw $t2, ($t1)       # $t2 = array[index]
addi $t2, $t2, 1    # $t2++
sw $t2, ($t1)       # array[index] = $t2
于 2013-10-23T08:19:17.003 回答