为什么在调用MIPS中的其他函数时将$ s寄存器保存到堆栈中?

时间:2015-10-25 21:43:13

标签: stack mips cpu-registers

我在stackoverflow中读到的其他问题与我的问题非常相似,但我仍然不明白。我理解堆栈背后的基本思想及其工作原理但我仍然不明白为什么你必须在调用函数之前省去$ s寄存器的值。

例如,请考虑此c代码。

int main()
{
   int a = 5, b = 5, c = 0;
   int c = addNumbers(a,b);
}

在那个例子中,我不关心c最初的价值,那么为什么要关心呢?我只关心从函数中获得的返回值。

我头顶的一个例子可以解释为什么你将$ s寄存器保存到堆栈中是为了将变量的值保存在main中,这样当你将这些变量发送到函数中时,这些变量的值main中的变量保持不变。

这是有道理的,因为该变量一方面可以用作函数中的参数,然后在从函数返回后用于if语句。 因此,在这种情况下,您可能希望保留该值。

如果有人可以提供更好的例子,那就太棒了。

0 个答案:

没有答案