2

所以我现在正在学习 MIPS,我在 MIPS 绿皮书上看到,在一次调用中总共保留了 12 个寄存器(包括 s 寄存器)。根据我的理解,必须将所有这些寄存器堆叠起来,然后在我们想要再次访问它们时检索它们。

但是我的问题是,如果遇到麻烦,为什么还要使用这些寄存器呢?除了可能用完的寄存器之外,是否还有使用这些寄存器的意义?

4

1 回答 1

8

MIPS 程序集有一个调用约定,它指定t寄存器是调用者保存的,而s寄存器是被调用者保存的。

这意味着如果你调用别人的函数,比如我的,你可以保证s在我的函数退出后,你的函数中的寄存器将是相同的。您不能为t寄存器保证这一点,我的函数可以自由覆盖。

在编写 MIPS 程序集时,您应该始终遵循此约定。

于 2013-10-09T23:37:23.113 回答