如何在MIPS中实现2D数组

时间:2014-08-08 23:03:51

标签: arrays assembly mips

我在互联网上找到的信息没有得到很好的解释。我想知道如何实现双精度浮点数的二维数组。我希望数组的维度是可变的,所以如果我说.double 100,那么我浪费了大量的内存,因为这可能不是数组的大小,例如可能是5 x 5.我是否必须使用堆栈来解决这个问题?或者我怎么能去做呢?此外,如果有人可以解释如何有效地填充数组,那将非常感激!

1 个答案:

答案 0 :(得分:2)

您可以使用row-major order将任何矩形2D数组实现为一维数组,唯一不同的是计算元素的地址。

例如,如果您有一个3×5的double数组,并且想要访问元素array[x][y],则可以使用以下公式计算其地址:

address of array[x][y] = base of array + 8 * (5 * x + y)

其中base of arrayarrayarray[0][0]的基地址,8是元素sizeof(double)的大小,5是列数。