-4

MIPSで以下を実装しようとしています

X は倍精度浮動小数点数の 2 次元配列 (行列) で、Y は 32 ビット整数の 2 次元配列です。次のコードを書き込もうとしています

Z= (X[i][j] + Y[i][j])

MIPS でこれらの配列を宣言する方法がわかりません。

.dataこれまでのところ、メインプログラムのいくつかを作成しましたが、セクションでそれらを実装する方法がわかりません

.data

.text
.main:
mtc1 $0, $f0
 cvt.d.w $f0, $f0
  # $a1 is the address of the first element of x
  l.a $r1, $a1
  # $a2 is the address of the first element of y
  l.a $r2, $a2
  addi $r4, $0, 30
  add.d $f8, $f0, $f0
4

1 に答える 1

0

2D 配列はそれほど悪くありません。コツは、一度に 1 つのディメンションを処理することです。各要素のサイズと各次元のサイズが分かれば、計算は簡単です。行インデックス (ゼロ ベース)、行サイズ、および要素サイズ (バイト単位) の積をベース アドレスに追加します。これは、必要な行のベース アドレスになります。それに列インデックスと要素サイズの積を追加すると、要素のアドレスが得られます。

データ セグメントに関しては、配列の合計サイズを予約するだけです。たとえば、3x4 のスペースが必要な場合は、12 要素を確保します。整数を使用している場合、 array: .word 0:12 が必要なことを行います。

于 2012-08-07T14:32:13.017 に答える