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 に答える