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

Arrays 如何在MIPS中分配可变大小的数组?,arrays,memory-management,mips,mars-simulator,Arrays,Memory Management,Mips,Mars Simulator,我正在努力学习MIPS。我遇到的问题是无法创建大小可变的数组。例如,在Java中,您可以 int n = 3; int [] arr = new int[n]; 我尝试在MIPS中做同样的事情,比如: .text .global main main: li $t1, 4 .data arr: .space $t1 但这会产生一个错误: “.space”需要一个非负整数 有什么建议吗?如何解决这个问题。参考,一个解决方案是在堆上为数组分配空间。假设您正在使用MARS运行MIPS代码,您可

我正在努力学习MIPS。我遇到的问题是无法创建大小可变的数组。例如,在Java中,您可以

int n = 3;
int [] arr = new int[n];
我尝试在MIPS中做同样的事情,比如:

.text 
.global main

main:
li $t1, 4

.data
arr: .space $t1
但这会产生一个错误:

“.space”需要一个非负整数

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

参考,一个解决方案是在堆上为数组分配空间。假设您正在使用MARS运行MIPS代码,您可以将
9
加载到
$v0
中,
$a0
应表示要分配的内存字节数。然后应该执行
系统调用


然后,分配内存的地址通过“可变大小”以
$v0

的形式返回,您是否希望在运行时创建它?因为我想你可以用
arr:.space 4
来代替.yup,但是我想让用户输入一个整数,然后我想要一个整数大小的数组。请看:好的,回答这个问题,如果你在堆栈上进行分配,我会接受(C中的局部范围是什么),您只需将当前堆栈指针保存为数组的起始位置,然后将堆栈指针向前移动数组的大小。