Chapitre 1
Introduction
L’objectif de ce projet informatique est de r´ealiser sous Linux, en langage C, un simulateur d’une
machine MIPS 32bits permettant d’ex´ecuter et de mettre au point des programmes ´ecrits en langage
du microprocesseur de la machine MIPS. Le rˆole d’un simulateur est de lire un programme donn´e en
entr´ee et d’ex´ecuter chacune des instructions avec le comportement de la machine cible (ici MIPS
32 bits). Les simulateurs permettent notamment de prototyper et d´eboguer des programmes sans la
contrainte de poss´eder le mat´eriel cible (ordinateur avec un microprocesseur MIPS 32 bits).
Plus pr´ecis´ement, le simulateur que vous devrez r´ealiser prendra en entr´ee un fichier objet au format
ELF et permettra :
— son ex´ecution compl`ete,
— son ex´ecution pas `a pas `a travers un interpr´eteur de commandes,
— son d´ebogage (p.ex. : affichage de la m´emoire interne, d´etection d’erreurs, rapport d’erreur. . .),
Par ailleurs, `a la fin du projet, votre simulateur devra pouvoir g´erer les fichiers dit relogeables qui
peuvent ˆetre charg´es `a n’importe quel endroit de la m´emoire.
Le simulateur devra ˆetre r´ealis´e en langage C et devra fonctionner dans l’environnement Linux de
l’´ecole. Pour ce projet nous consid´ererons en fait un microprocesseur simplifi´e, n’acceptant qu’un jeu
r´eduit des instructions du MIPS. Ces instructions du microprocesseur MIPS seront simul´ees/r´ealis´ees
par des appels de fonctions du langage C, elles-mˆeme compil´ees en une s´erie d’instructions pour le
microprocesseur effectuant la simulation (celui de la machine sur lequel est effectu´e le travail).
Le chapitre 2donne une pr´esentation g´en´erale du microprocesseur et introduit le langage assem-
bleur consid´er´e et le sous-ensemble des instructions du MIPS `a g´erer dans le projet. Le chapitre 3
d´etaille l’organisation et les fonctionnalit´es attendues du simulateur tandis que le chapitre 4introduit
le format des fichiers d’entr´ee et le principe de relocation. Les chapitres 5et 6pr´esentent quelques
consid´erations importantes pour la mise en œuvre, puis des informations sur l’organisation g´en´erale
du projet.
L’int´erˆet p´edagogique de ce projet est multiple : il permet tout d’abord de travailler sur un pro-
jet de taille importante sous tout ses aspects techniques (analyse d’un probl`eme, conception puis
impl´ementation d’une solution, validation du r´esultat) mais aborde aussi les notions de gestion de pro-
jet et de respect d’un planning. Ce projet vous permettra ´egalement d’acqu´erir la maˆıtrise du langage
C qui est particuli`erement utilis´e pour la programmation scientifique et le d´eveloppement industriel,
ainsi que des outils de d´eveloppement associ´es (syst`emes Unix/Linux, outil Make, d´eboggueur). Enfin,
il illustre et met en pratique les connaissances relatives aux microprocesseurs (cf. cours d’architecture
ou cours d’ordinateurs et microprocesseurs).
3