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é à lassembleur
$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 lenvironnement dune fonction (Frame Pointer)
$31 ($ra) est utilisé à lappel dune fonction pour sauvegarder ladresse 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 dutiliser 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 dinterruptions, le mode
du processeur, )
»$13 : le registre cause de lexception (cause)
»$14 : le registre contenant ladresse de linstruction qui a causé lexception
(EPC - Exception PC)
»$8 : le registre contenant ladresse 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 nutilise 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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !