5
我在想,MIPS架构中的$k0
和$k1
寄存器是什么。 如在WikiBooks MIPS Assembly
k寄存器被保留供OS内核使用。
但是我找不到任何关于的东西它们有什么用?还有如何使用它们?
谢谢。
我在想,MIPS架构中的$k0
和$k1
寄存器是什么。 如在WikiBooks MIPS Assembly
k寄存器被保留供OS内核使用。
但是我找不到任何关于的东西它们有什么用?还有如何使用它们?
谢谢。
中断处理程序必须保存它将要使用的任何通用寄存器(在返回时被恢复)。但要做到这一点,需要先修改至少一个寄存器(,如sw $t0, saved_t0
扩展为使用$at
的两条机器指令)。
这种情况通过禁止用户程序使用两个通用寄存器$k0
和$k1
(k表示内核,异常处理程序是其一部分)来解决。允许中断处理程序使用$k0
和$k1
,而不必保存或恢复其值。这就允许有足够的余地来开始保存寄存器,并且可以从中断处理程序返回。
'$ k0'和'$ k1'分别是寄存器'$ 26'和'$ 27'的别名。 “保留”部分只是惯例,CPU不在意。操作系统可以将它用于任何想要的。可以用作临时寄存器,可以使用而不用担心破坏用户空间状态。 – Jester
@Jester OK,等等,操作系统如何使用这些寄存器? (就像汇编程序在转换伪指令时使用的$ 1一样)到指令中(当我在寻找我的答案时,我遇到了如下的术语:“它们用于管理中断”等等。管理中断的顺序或它们有用的用途?) – AliLotfi
它们是正常的寄存器,您可以照常使用它们。不明白你的问题。至于管理中断,它们可以用作临时寄存器,直到用户状态被保存。我已经说过了。 – Jester