在装配中挣扎着2D阵列

时间:2012-08-07 12:18:55

标签: assembly mips spim pcspim

我正在尝试在MIPS中实现以下内容

X是双精度浮点的二维数组(矩阵) 数字和Y是32位整数的二维数组。 尝试编写以下代码

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

1 个答案:

答案 0 :(得分:0)

2D阵列并不坏。诀窍是一次处理一个维度。如果您拥有每个元素的大小以及每个维度的大小,则数学很简单。将行索引(基于零),行大小和元素大小(以字节为单位)的乘积添加到基址。这将是您想要的行的基地址。添加列索引和元素大小的乘积,并获得元素的地址。

对于数据段,只需保留数组的总大小。例如,如果您需要3x4的空间,请保留12个元素。如果您使用整数,则数组:.word 0:12将执行您所需的操作。