【问题标题】:How to allocate an array of variable size in MIPS? [duplicate]如何在 MIPS 中分配可变大小的数组? [复制]
【发布时间】:2018-04-02 19:12:54
【问题描述】:

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

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

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

.text 
.global main

main:
li $t1, 4

.data
arr: .space $t1

但这会报错:

".space" 需要一个非负整数

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

【问题讨论】:

  • 通过“可变大小”,您是否希望在运行时创建它?因为我想你可以改用arr: .space 4
  • 是的,但是我想让它让用户输入一些整数,然后我想要那个整数大小的数组。
  • 好的,回答我就接受
  • 如果你在堆栈上分配(在 C 中是本地范围的),你只需将当前堆栈指针保存为数组的起始位置,然后将堆栈指针推进数组。

标签: arrays memory-management mips mars-simulator


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2015-10-24
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多