MIPS での配列のインデックス付けに少し問題があります。次のCコードがあるとしましょう:
void main() {
.
.
int[2] a; # or any other length
.
.
a[1] = 7; # or any other number
.
.
}
フレームポインターからの「a」オフセットがたとえば12であることを知っているとしましょう。
lw t0, -12($fp)
「a」のベースアドレスを教えてくれます。ここで、配列アクセス インデックス値 (この場合は 1) が $t1 に格納されているとします。しかし、私はそれが何であるかわかりません。[1] に 7 を格納するにはどうすればよいですか? 私は次のようなものを探しています:
mul $t1, $t1, -4 # since each integer takes 4 bytes
addi $t1, $t1, -12 # t1 = exact offset from $fp to a[1]
li $t2, 7 # t2 = 7
sw $t2, $t1($fp)
問題は、最後の操作が不正であることです ( MIPS アセンブリを使用した整数配列のインデックス付けにもかかわらず)。これどうやってするの?ありがとうございました