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