2013-10-23 89 views
1

我有一個關於MIPS的一些符號的快速問題,關於我感到困惑的數組。MIPS數組迭代符號?

可以說我有一個$ t0的值。它可以是任何東西,我們會說3

我想要做的是1

增加存儲在陣列內的指數($在T0舉行的值)的值,什麼是正確的符號:addi array($t0), array($t0), 1

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

作爲一個例子,如果$ T0中有3,那麼我想通過1

回答

1

MIPS,以增加在陣列[3]的值是一個load/store architecture,所以得的值加載到寄存器,增加它,然後將其存回:

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 
+0

我沒想到答案會是這樣複雜。但經過一番思考之後,感謝邁克爾!我可能會挑剔的唯一的事情是,當你使用$ t2,($ t1)時,在$ t1前面沒有0,但我想這是簡寫? – YourbrainonCompSci