2015-01-13 12 views
5

Mi chiedevo quali sono i registri $k0 e $k1 nell'architettura MIPS. in quanto v'è il WikiBooks MIPS Assembly

I registri k sono riservati per l'utilizzo da parte del kernel del sistema operativo.

Ma non sono riuscito a trovare nulla su a cosa servono? e anche come usarli?

Grazie.

+0

'$ k0' e' $ k1' sono solo alias per i registri '$ 26' e' $ 27' rispettivamente. La parte "riservata" è solo per convenzione, la CPU non interessa. Il sistema operativo può usarlo per quello che vuole. Può essere utile come un registro scratch che può essere utilizzato senza timore di corrompere lo stato dello spazio utente. – Jester

+0

@Jester OK, e in che modo il sistema operativo può utilizzare questi registri? (Come '$ 1' che viene utilizzato dall'assemblatore mentre converte le istruzioni pseudo, in istruzioni) (Quando cercavo le mie risposte, ho affrontato termini come:" Sono usati per gestire gli interrupt "e così. ordine di gestione degli interrupt o di cosa sono utili?) – AliLotfi

+0

Sono registri normali, è possibile usarli come al solito. Non capisco la tua domanda. Per quanto riguarda la gestione degli interrupt, possono essere utilizzati come registri scratch fino a quando lo stato dell'utente non viene salvato. L'ho già detto. – Jester

risposta

9

Un gestore di interrupt deve salvare tutti i registri di uso generale che intende utilizzare (da ripristinare in risposta). Ma per farlo è necessario modificare prima almeno un registro (una cosa come sw $t0, saved_t0 si espande a due istruzioni della macchina usando $at).

Questa situazione viene risolta impedendo ai programmi utente di utilizzare due registri generici, $k0 e $k1 (il simbolo k sta per kernel, di cui fa parte un gestore di eccezioni). Il gestore di interrupt è autorizzato a utilizzare $k0 e $k1 senza dover salvare o ripristinare i loro valori. Ciò consente un margine di manovra sufficiente per iniziare a salvare i registri, oltre a rendere possibile il ritorno dal gestore di interrupt.

Problemi correlati