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