Introduction aux systèmes Informatiques:
Interface Matériel Logiciel
(A3- 2016/2017)
Léon Mugwaneza
Polytech’ Marseseille/Dépt. Informatique
(bureau A118)
I. Le Langage Machine
Exemple : le MIPS R2000 (Architecture MIPS-I)
2
MIPS R2000
• MIPS : Microprocessor without Interlocked Pipeline Stages
– Issu d’un projet de l’université de Stanford
  Architecture MIPS-I (1985)
• Machine 32 bits
– registres de 32 bits (mots de 32 bits)
– little endian ou big endian par configuration
– les instructions sont codées sur un mot et s’exécutent (pour la
plupart) en 1 cycle ==> machine RISC
• Architecture load/store
– machine à registres adressables où seules 2 «instructions» (load et
store) accèdent à la mémoire
» le mot du MIPS est suffisamment large (et le codage suffisamment
«bien fait») pour pouvoir spécifier 3 registres dans certaines
instructions
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
4
Les registres (2/2)
• registres spécialisés
– le compteur ordinal (PC - Program Counter)
– deux registres Hi (High) et Lo (Low) utilisés (implicitement) par les
instructions de multiplication et division entre entiers
– des registres de contrôle regroupés dans le coprocesseur 0 (jusqu’à 32
pour les versions supérieures). Signalons :
» $12 : le registre d’état (status) (contient le masque d’interruptions, le mode
du processeur, … )
» $13 : le registre cause de l’exception (cause)
» $14 : le registre contenant l’adresse de l’instruction qui a causé l’exception
(EPC - Exception PC)
» $8 : le registre contenant l’adresse mémoire qui a causé une violation de
protection mémoire (BadVAddr - Bad Virtual Address)
– Les registres du coprocesseur flottants (coprocesseur 1)
» 32 registres de 32 bits ($f0 à $f31) utilisés comme 16 registres simples
précision (on n’utilise que les 16 registres de no. pairs), et 16 registres
double précision (par jeu de 2 registres)
» 1 flag code condition pour les instructions de comparaison des flottants
5
Formats des instructions
• Format I : utilisé pour des instructions qui manipulent des
constantes, load et store (le déplacement est une constante), et
les instructions de branchement qui utilisent un déplacement
par rapport au compteur ordinal
• Format J : utilisé pour les instructions j et jal (voir plus loin)
• Format R : utilisé pour toutes les autres instructions
– R
– I
– J Op (6)
31 26 0 25
target address (26 bits)
op (6)
31 26 0 15 16 20 21 25
rs (5) rt (5) Immediate (16)
op (6)
31 26 0 15 16 20 21 25
rs(5) rt(5) rd(5)
5 6
10
11
funct(6)
shamt(5)
1 / 48 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!