1

私は今、宿題に取り組んでおり、次の情報が与えられました。

$s6は配列Aのベースアドレスの場所で、$s0fの値の場所です(指定されていません)。

一部の命令を C ステートメントに変換する必要があります。ただし、これが私の質問です。これに答えがあれば、この問題の残りの部分を非常に簡単に実行できるからです。

$t0、$s6、$s0 を追加

それは言っていますか、それとも$t0 = (the base address of array A) + f 言ってい$t0 = A[0+f]ますか?

A のベース アドレスが 0x04000000 で、addi を使用してそのベース アドレスに 4 を加算し、0x04000004 を生成し、その値を t0 に割り当てた場合、私が言っているのは t0 = A[1] ということです (整数)。

しかし、f の値がわからないので、これを C で表現する方法がわかりません。インデックスを変更していることはわかっていますが、どの程度かはわかりません。言う方がより正確でしょうか(上記の指示が与えられた場合):

$t0 = A[f/4]

私はこのすべてに慣れていません。うまくいけば、これを理解しようとして少し調査を行ったことを示しました。

ありがとう

OSFTW

4

1 に答える 1

1

この命令には間接参照はありません。

add $t0, $s6, $s0

それは言うようなものです

t0 = s6 + s0;

Cのような擬似コード。またはあなたの例のために:

t0 = (char *)A + f;

Aから値を取得するには、次のようになります。

lw $t1, 0($t0)

前のadd命令を実行した後$t0、配列内の正しい場所を指すようにします。

于 2013-02-07T02:56:17.073 に答える