为什么寄存器 $v0 被调用者保存?

Why the register $v0 is caller saved?

我正在研究 MIPS 体系结构,我不明白为什么寄存器 $v0 被调用者保存。

该寄存器是函数存储 return 值的地方。调用者何时以及为什么必须保存它?有人可以举个例子吗?

因为它是保存 return 值的寄存器,所以它不能被调用者保存。那会造成被叫方都

  • 必须更改寄存器,以便return其中的值,并且
  • 不允许更改它(临时除外),因为它是被调用者保存的。

所以这是来电保存。这并不意味着调用者必须保存它,它只是意味着 if 调用者需要在整个调用中保留该值,then 它必须将其保存在其他地方。