如何在 MIPS 中分配可变大小的数组?

How to allocate an array of variable size in MIPS?

我正在尝试学习 MIPS。我遇到的问题是我无法创建可变大小的数组。例如在 Java 你可以做

int n = 3;
int [] arr = new int[n];

我正在尝试在 MIPS 中做同样的事情,比如:

.text 
.global main

main:
li $t1, 4

.data
arr: .space $t1

但这给出了一个错误:

".space" requires a non-negative integer

有什么建议吗?我该如何解决这个问题。

引用 this question,一种解决方案是在堆上为您的数组分配 space。假设您正在使用 MARS 来 运行 您的 MIPS 代码,您可以将 9 加载到 $v0 并且 $a0 应该代表要分配的内存字节数。然后你应该执行 syscall.

然后在$v0中返回分配内存的地址。