Arrays 如何从MIPS过程返回数组?

Arrays 如何从MIPS过程返回数组?,arrays,assembly,mips,procedure,calling-convention,Arrays,Assembly,Mips,Procedure,Calling Convention,从MIPS过程返回地址或值数组的标准方法是什么 例如,假设,我想读一个句子,并想返回在该句子中找到的单词。或者,假设我想返回每个单词第一个字符的位置。等等。标准方法与在C中可以执行的操作相同: 让调用方传递输出指针(指向已分配的数组,例如堆栈上的数组) 让函数malloc生成一个数组并返回一个指针。(或mmap或其他,但调用者必须知道内存是如何分配的,因为调用者随后将负责释放内存。) 或者你可以做一些奇怪的事情,比如把数组放到调用堆栈上,然后在$sp修改后返回(因此$sp返回时指向数组的开头

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


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

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

  • 让调用方传递输出指针(指向已分配的数组,例如堆栈上的数组)
  • 让函数malloc生成一个数组并返回一个指针。(或
    mmap
    或其他,但调用者必须知道内存是如何分配的,因为调用者随后将负责释放内存。)
或者你可以做一些奇怪的事情,比如把数组放到调用堆栈上,然后在
$sp
修改后返回(因此
$sp
返回时指向数组的开头);在汇编语言中,您可以根据需要制定自己的调用约定。并且可能返回
$v0
中的长度或大小,以便调用方在最终想要返回时可以恢复
$sp


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

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

  • 让调用方传递输出指针(指向已分配的数组,例如堆栈上的数组)
  • 让函数malloc生成一个数组并返回一个指针。(或
    mmap
    或其他,但调用者必须知道内存是如何分配的,因为调用者随后将负责释放内存。)
或者你可以做一些奇怪的事情,比如把数组放到调用堆栈上,然后在
$sp
修改后返回(因此
$sp
返回时指向数组的开头);在汇编语言中,您可以根据需要制定自己的调用约定。并且可能返回
$v0
中的长度或大小,以便调用方在最终想要返回时可以恢复
$sp


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

你能提供一个示例或示例链接吗?@user366312:google可以,如果你搜索
site:stackoverflow.com mips return array
。e、 g.Craig关于的回答是第一种情况的一个很好的例子,在第一种情况下,调用方传递一个指向数组的指针。你能提供一个示例或指向示例的链接吗?@user366312:google能,如果你搜索
site:stackoverflow.com mips return array
。e、 克雷格关于的回答是第一种情况的一个很好的例子,调用方将指针传递给数组。