2015-01-13 18 views
5

我在想,MIPS架构中的$k0$k1寄存器是什么。 如在WikiBooks MIPS Assembly

k寄存器被保留供OS内核使用。

但是我找不到任何关于的东西它们有什么用?还有如何使用它们?

谢谢。

+0

'$ k0'和'$ k1'分别是寄存器'$ 26'和'$ 27'的别名。 “保留”部分只是惯例,CPU不在意。操作系统可以将它用于任何想要的。可以用作临时寄存器,可以使用而不用担心破坏用户空间状态。 – Jester

+0

@Jester OK,等等,操作系统如何使用这些寄存器? (就像汇编程序在转换伪指令时使用的$ 1一样)到指令中(当我在寻找我的答案时,我遇到了如下的术语:“它们用于管理中断”等等。管理中断的顺序或它们有用的用途?) – AliLotfi

+0

它们是正常的寄存器,您可以照常使用它们。不明白你的问题。至于管理中断,它们可以用作临时寄存器,直到用户状态被保存。我已经说过了。 – Jester

回答

9

中断处理程序必须保存它将要使用的任何通用寄存器(在返回时被恢复)。但要做到这一点,需要先修改至少一个寄存器(,如sw $t0, saved_t0扩展为使用$at的两条机器指令)。

这种情况通过禁止用户程序使用两个通用寄存器$k0$k1(k表示内核,异常处理程序是其一部分)来解决。允许中断处理程序使用$k0$k1,而不必保存或恢复其值。这就允许有足够的余地来开始保存寄存器,并且可以从中断处理程序返回。