从MIPS过程返回地址或值的数组的标准方法是什么?
例如,假设我想阅读一个句子并想返回该句子中找到的单词。或者,假设我想返回每个单词的第一个字符的位置。等等。
答案 0 :(得分:2)
标准方法与您在C语言中可以执行的操作相同:
mmap
或其他任何方法,但调用者必须知道内存的分配方式,因为调用者随后将负责释放它。)或者您可以做一些奇怪的事情,例如将数组放入调用堆栈,并以修改后的$sp
返回(因此$sp
指向返回时数组的开头);如果需要,可以使用汇编语言来编写自己的调用约定。并且可以返回$v0
的长度或大小,以便呼叫者在最终想要返回时可以恢复$sp
。
如果您不提前知道长度,那么最后一种方法实际上是好的,您可以从尾部开始创建数组。 (所以它像调用堆栈一样向下增长,就像您使用它一样像堆栈数据结构一样。)