如何在 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
中返回分配内存的地址。
我正在尝试学习 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
中返回分配内存的地址。