【问题标题】:How would one go about creating a new array containing the non-zero elements from another two-dimensional array in MIPS?如何在 MIPS 中创建一个包含来自另一个二维数组的非零元素的新数组?
【发布时间】:2021-04-30 15:52:50
【问题描述】:

我有一个二维整数数组 A(长度 m,宽度 n)保存在 MIPS 中的地址处。在这个数组中,我想创建另一个数组 B,它只包含数组 A 中的非零值。从伪代码的角度来看,如何实现它?

我的想法是逐行遍历数组A(每行作为一维数组)。这意味着将数组 A 细分为 n 个一维数组,并使用 for 循环过滤掉非零元素。

这种方法听起来可信吗?

【问题讨论】:

  • B是一维的还是二维的?另请注意,二维数组只是 m*n 大小的一维数组的简写。
  • B 是一维数组。

标签: assembly multidimensional-array mips smips


【解决方案1】:

二维数组实际上只是内存中的一维数组,所以如果你不关心按特定顺序循环,你可以循环内存中的数组(m*n)以节省一些指令。否则你可以像你说的那样逐行遍历。

我将使用的基本想法是让数组 B 模拟推入堆栈。这将在最后留下一些零,您将拥有非零“堆栈”的大小。每次向数组添加元素时,都会增加“堆栈”大小。

伪代码:

int b[m*n];

int b_size = 0;
for (int i=0; i<m*n; i++)
{
    if (a[i] != 0) 
    {
        b[b_size] = a[i];
        b_size++;
    }
}

希望您能从这里弄清楚如何将其转换为 MIPS。

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2011-02-02
    • 2011-04-11
    • 1970-01-01
    • 2021-10-12
    • 2021-11-26
    • 2019-09-03
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多