如何从MIPS过程返回数组?

时间:2019-04-02 04:38:29

标签: arrays assembly mips procedure calling-convention

从MIPS过程返回地址或值的数组的标准方法是什么?

例如,假设我想阅读一个句子并想返回该句子中找到的单词。或者,假设我想返回每个单词的第一个字符的位置。等等。

1 个答案:

答案 0 :(得分:2)

标准方法与您在C语言中可以执行的操作相同:

  • 让调用者传递一个输出指针(指向已分配的数组,例如在堆栈上)
  • 具有向数组分配函数并返回指针的功能。 (或mmap或其他任何方法,但调用者必须知道内存的分配方式,因为调用者随后将负责释放它。)

或者您可以做一些奇怪的事情,例如将数组放入调用堆栈,并以修改后的$sp返回(因此$sp指向返回时数组的开头);如果需要,可以使用汇编语言来编写自己的调用约定。并且可以返回$v0的长度或大小,以便呼叫者在最终想要返回时可以恢复$sp

如果您不提前知道长度,那么最后一种方法实际上是好的,您可以从尾部开始创建数组。 (所以它像调用堆栈一样向下增长,就像您使用它一样像堆栈数据结构一样。)