C语言 MIPS传递两个参数并保存它



我在C中有以下代码

int bitIndex = hash_str(input, i);

hash_str只是我调用的一个函数。input是指向char的指针,i是标准整数

我想在MIPS中实现这个功能。我已经确定input=$a0i=$s0(我已经在堆栈上保存了$s0)。

传统智慧告诉我,当涉及到调用函数时,我只需要

ARG I
ARG II
jal LABEL

我的困境在这里是$a0$s0已经"存在",所以我怎么用它们调用hash_str函数?此外,如何将其存储在MIPS中的整数中?

C编译器将遵循标准调用约定,尽管可能有一些不同行为的选项。

一般来说,第一个int或指针类型参数在$a0中,第二个在$a1中,第三个在$a2中,第四个在$a3中。int或指针类型返回值进入$v0

填充寄存器的顺序并不重要,只要在调用指令(jal)之前将正确的值放置在正确的寄存器中。所以,你可以先把参数2放在$a1中,然后把参数1放在$a0中,它仍然会一样工作。

有关更多信息,请参阅此处:https://www.dyncall.org/docs/manual/manualse11.html并向下滚动到您的架构&ABI。

最新更新