如何从MIPS过程返回数组?

问题描述 投票:0回答:1

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

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

arrays assembly mips procedure calling-convention
1个回答
2
投票

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

  • 让调用者传递一个输出指针(到已分配的数组,例如在堆栈上)
  • 让函数malloc成为一个数组并返回一个指针。 (或者mmap或其他什么,但调用者必须知道内存是如何分配的,因为调用者然后负责释放它。)

或者你可以做一些奇怪的事情,比如把数组放到调用堆栈上,然后用$sp修改返回(所以当你返回时,$sp指向数组的开头);在汇编语言中,如果需要,您可以组成自己的调用约定。并且可能在$v0中返回长度或大小,以便呼叫者可以在最终想要返回时恢复$sp

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

© www.soinside.com 2019 - 2024. All rights reserved.