MIPS 汇编语言中的可变长度数组

发布于 2025-01-04 05:13:00 字数 155 浏览 0 评论 0原文

在 MIPS 中,我知道我可以将数组声明为:

list: .space 20

但是,如果我想根据用户输入创建不同大小的数组怎么办? 这可能吗?

例如,程序会要求用户输入一个整数 N 并创建一个长度为 N 的数组。

In MIPS, I know that I can declare an array as:

list: .space 20

However, what if I wanted to create an array of different size based on user input?
Is this possible?

For example, the program would ask the user to input an integer N and create an array of length N.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如此安好 2025-01-11 05:13:00

这是个好问题。在汇编语言中,按照您的方式声明的变量是静态分配的,即它们是在汇编时分配的。如果要在运行时根据用户输入分配变量,则至少有两种选择:在堆栈上分配空间(并监视堆栈溢出)或从内存池(通常称为堆)分配空间。无论哪种情况,分配都是在朗姆酒时间而不是在装配时间完成的。

That's a good question. In assembly language, variables declared as you've done are statically allocated, that is they're allocated at assembly time. If you want to allocate a variable based on user input at run time you have at least two choices: Allocate space on the stack (and watch for stack overflow) or allocate from a memory pool, usually called the heap. In either case, the allocation is done at rum time rather than at assembly time.

过期情话 2025-01-11 05:13:00

可以使用系统调用9在堆上分配内存

li $a0, numbytes
li $v0, 9
syscall

地址在$v0中返回

You can use system call 9 to allocate memory on the heap

li $a0, numbytes
li $v0, 9
syscall

The address is returned in $v0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文