【问题标题】:How to implement 2D array in MIPS如何在 MIPS 中实现二维数组
【发布时间】:2014-08-08 23:03:51
【问题描述】:

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

【问题讨论】:

  • 您遇到的问题是动态分配内存(使用sbrk 或堆栈)还是将内存用作二维数组(选择行顺序并相应地索引,如图所示@ 987654321@)?这是两个不同的问题。

标签: arrays assembly mips


【解决方案1】:

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

例如,如果您有一个 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 是列数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-04
    • 2017-11-09
    • 2011-03-17
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多