汇编代码中的二维数组

时间:2017-05-11 11:35:55

标签: arrays assembly mips

如何将其转换为mips汇编代码

M[][]= {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16}}

我应该把这个数组分成两个还是什么? 像这样?

M1: .byte 1, 2, 3, 4, 5, 6, 7, 8
M2: .byte 9, 10, 11, 12, 13, 14, 15, 16

1 个答案:

答案 0 :(得分:0)

不,它是16个字节值(1-16)的单个连续M数组。 “两个MxN维度”由索引映射函数 fmap(n,m)= n * M + m 伪造,然后元素(n,m)的地址为M + fmap(m, n)

即。要从4x4数组中获取M [2,3],你计算元素的偏移为2 * 4 + 3 = 11(如果索引从0开始,当然,正如每个体面的低级编程语言一样,吃掉这个pascal!),所以这将是值为12的元素(第三组中的最后一个)。

计算机内存只是“一维”的,所以代码必须将更复杂的结构映射到它。