3
Les registres (1/2)
• 32 registres généraux, mais convention de programmation
– $0 ($zero) vaut toujours 0 (donc 31 registres généraux !)
– $1 ($at - assembler temporary) est réservé à l’assembleur
– $2 ($v0) et $3 ($v1) sont destinés à contenir les résultats des fonctions
– $4 à $7 ($a0 à $a3) sont destinés au passage des paramètres
– $8 à $15, $24 et $25 ($t0 à $t9) : temporaires non sauvegardés par les appels de
procédures
– $16 à $23, ($s0 à $s7) : temporaires sauvegardés
– $26 et $27 ($k0 et $k1) sont réservés au noyau du SE (Kernel)
– $28 ($gp) : pointeur sur les données globales (Global Pointer)
– $29 ($sp) : pointeur de pile (Stack Pointer)
– $30 ($fp) : pointeur sur l’environnement d’une fonction (Frame Pointer)
– $31 ($ra) est utilisé à l’appel d’une fonction pour sauvegarder l’adresse de
retour (Return Address)
Les conventions de programmation sont destinées au programmeur
(et surtout au compilateur) et ne sont pas une contrainte du matériel
(pour la plupart des registres)
Elles permettent d’utiliser des procédures compilées séparément