2015-01-13 77 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,而不必保存或恢復其值。這就允許有足夠的餘地來開始保存寄存器,並且可以從中斷處理程序返回。