Le MIPS comporte 32 registres généraux interchangeables, sauf
•le registre 0 qui vaut toujours zéro, même après une écriture.
•Le registre 31, utilisé implicitement par certaines instructions pour sauver l'adresse de retour avant un saut.
Les autres registres portent les numéros restants de 1 à 30. Comme cela n'est ni beau ni pratique, on leur donne des noms conventionnels. Ces noms correspondent à des utilisations préférentielles, qui seront détaillées par la suite.
Nom Numéro Usage
zero 0 Zéro (toujours)
at 1 Réservé par l'assembleur
v0 .. v1 2 .. 3 Retour de valeurs
a0 .. a3 4 .. 7 Passage d'arguments
t0 .. t7 8 .. 15 Temporaires non sauvegardés
s0.. s7 16 .. 23 Temporaires sauvegardés
t8.. t9 24 .. 25 Temporaires non sauvegardés
k0.. k1 26 .. 27 Réservés par le système
gp 28 Global Pointer
sp 29 Stack Pointer
fp 30 Frame Pointeur
ra 31 Return Address
Enfin et c'est assez important, il existe des registres spécifiques au processeur. Le principal est le compteur ordinal (program counter), noté pc. Le processeur incrémente le registre pc après la lecture d'une instruction et les instructions de saut écrivent dedans.
Le processeur Pentium ne possède que que huit registres d'usage général, dont les noms conventionnels sont du genre eax, ebx, ecx…
On peut voir les registres comme un tout petit peu de mémoire, très rapidement accessible. La bonne exploitation des registres compte pour beaucoup dans la rapidité d'un programme, car l'accès à une case de mémoire est bien plus coûteuse que l'accès à un registre. L'évolution en cours des processeurs et des mémoires ne fait que renforcer ce décalage, et la multiplications de caches toujours plus grands ne le résout que partiellement.