Ensimag — Printemps 2013
Projet Logiciel en C
Sujet :
Assembleur pour microprocesseur MIPS
Auteurs : des enseignants actuels et antérieurs du projet C.
2
Table des matières
1 Présentation générale du projet 7
2 Description du microprocesseur MIPS 9
2.1 Définitions et notations ................................... 9
2.2 Généralités ......................................... 10
2.3 La mémoire ......................................... 10
2.4 Les registres ......................................... 12
2.4.1 Les registres d’usage général ............................ 12
2.4.2 Les registres spécialisés .............................. 13
2.5 Les modes d’adressage ................................... 13
2.5.1 Adressage registre direct .............................. 13
2.5.2 Adressage immédiat ................................ 13
2.5.3 Adressage indirect avec base et déplacement : offset(base) .......... 14
2.5.4 Adressage relatif .................................. 14
2.5.5 Adressage absolu aligné dans une région de 256Mo ................ 14
2.6 Les entrées/sorties ...................................... 15
2.7 Gestion des exceptions ................................... 15
2.8 Exécution et delay slot ................................... 16
3 Le langage d’assemblage du MIPS 19
3.1 Les commentaires ...................................... 19
3.2 Les étiquettes ........................................ 19
3.3 Les nombres littéraux .................................... 20
3.4 Les instructions machine .................................. 20
3.5 Les directives ........................................ 20
3.5.1 Directives de sectionnement .text,.data et .bss ................ 21
3.5.2 Les directives de définition de données ...................... 21
3.5.3 Directive d’alignement .align .......................... 22
3.5.4 Directive d’exportation des noms ......................... 23
3.5.5 Directive de non ré-ordonnancement ........................ 24
4 Les instructions du MIPS 25
4.1 Catégories d’instructions .................................. 25
4.1.1 Les instructions de type R............................. 25
4.1.2 Les instructions de type I............................. 26
4.1.3 Les instructions de type J............................. 26
3
4TABLE DES MATIÈRES
4.2 Instructions étudiées dans le projet ............................. 27
4.2.1 Instructions arithmétiques ............................. 27
4.2.2 Les instructions logiques .............................. 27
4.2.3 Les instructions de décalage et set ......................... 27
4.2.4 Les instructions de lecture/écriture mémoire .................... 28
4.2.5 Les instructions de branchement et de saut, et de contrôle ............. 28
4.3 Les pseudo-instructions ................................... 29
4.4 Codage binaire des instructions ............................... 30
4.4.1 Exemple : l’instruction ADD ............................ 30
4.4.2 Champs spécifiques de certaines instructions (JR,SRL,SYSCALL, . . .) . . . . . . 31
5 Relocation 33
5.1 Cycle de vie d’un programme ................................ 33
5.2 Les symboles ........................................ 34
5.3 Principe de la relocation .................................. 35
5.3.1 Définition ...................................... 35
5.3.2 Relocation en pratique ............................... 35
5.4 Relocation au format ELF pour le MIPS .......................... 37
5.4.1 La table des symboles ............................... 37
5.4.2 Table de relocation ................................. 38
5.4.3 Champ addend ................................... 38
5.4.4 Modes de relocation du MIPS ........................... 39
5.4.5 . . . .......................................... 40
6 Comment programmer un assembleur ? 41
6.1 Analyse lexicale ....................................... 41
6.2 Analyse syntaxique ..................................... 41
6.3 Génération du code binaire ................................. 42
6.4 Écriture du fichier objet ................................... 43
7 Spécifications, travail à réaliser 45
7.1 Spécifications de l’assembleur ............................... 45
7.2 Code et modules fournis .................................. 46
7.2.1 Squelette de l’assembleur ............................. 46
7.2.2 Module d’écriture de fichiers ELF ......................... 48
7.3 Travail à réaliser ....................................... 48
7.3.1 Assembleur ..................................... 48
7.3.2 Validation ...................................... 48
7.3.3 Extension : réécriture de elf_writer.o ..................... 48
8 Généralités et organisation du projet 49
8.1 Objectifs du projet ..................................... 49
8.2 Déroulement du projet ................................... 49
8.2.1 Organisation du libre-service encadré ....................... 49
8.2.2 Cas de fraudes ................................... 50
8.2.3 Conseils et consignes ................................ 50
8.2.4 Styles de codage .................................. 51
TABLE DES MATIÈRES 5
8.2.5 Outils ........................................ 52
8.2.6 Aspects matériel .................................. 53
8.3 Evaluation du projet ..................................... 53
8.3.1 Rendu des fichiers de votre projet ......................... 53
8.3.2 Soutenance ..................................... 54
Bibliographie 55
A Suite d’outils spécifiques au MIPS 57
A.1 Génération de fichiers ELF ................................. 57
A.1.1 L’assembleur mips-as ............................... 57
A.1.2 L’éditeur de liens mips-ld ............................. 57
A.2 Étude du contenu de fichiers ELF .............................. 58
A.3 Exécution de programmes pour MIPS ........................... 58
B Exemple complet avec relocation 59
B.1 Programme exempleElf.s ................................ 59
B.2 Désassemblage, tables de relocation et de symboles .................... 60
B.3 Calculs de relocation .................................... 61
B.3.1 JAL write ..................................... 61
B.3.2 SW $3, Y ...................................... 62
B.3.3 Étiquettes Yet Z.................................. 63
B.3.4 Et moi dans tout ça ? ................................ 63
B.4 Cas d’un fichier exécutable ................................. 63
C Exemple avec relocation sur plusieurs fichiers 65
C.1 Fichiers sources ....................................... 65
C.2 Listings générés ....................................... 65
C.3 Tables de relocation ..................................... 66
C.4 Table de symboles ...................................... 67
C.5 Édition de liens ....................................... 68
D Exemple avec relocation R_MIPS_PC16 70
D.1 Fichiers sources ....................................... 70
D.2 Listings générés ....................................... 70
D.3 Tables de relocation ..................................... 71
D.4 Édition de liens ....................................... 71
E Structure de fichiers ELF et module fourni elf_writer 73
E.1 Tables ............................................ 73
E.2 Module elf_writer et structure des principales tables .................. 74
E.2.1 Structures de données ............................... 76
E.2.2 Utilisation générale ................................. 76
E.2.3 Ecriture des sections .text,.data et .bss .................... 76
E.2.4 Ecriture de la table des chaînes ........................... 76
E.2.5 Ecriture de la table des symboles .......................... 77
E.2.6 Entrées de relocation ................................ 78
1 / 97 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 !