Compilation d’un mini langage impératif en assembleur

Occurrences : 

2016

Nombre d'étudiants minimum: 

2

Nombre d'étudiants maximum: 

4

Nombre d'instances : 

2

L'objectif de ce projet est de réaliser un compilateur pour un langage de programmation impératif simple ne contenant que les instructions les plus basiques.
On considèrera que toutes les variables prennent la valeur d'entiers, et on aura au minimum les fonctionnalités suivantes:

  • Opérations arithmétiques simples sur les entiers (addition, soustraction, multiplication et division)
  • Affectations : x <- y-4 ;
  • Boucles : if(condition) then {instructions} else {instructions}, while(condition){instructions}

La première étape sera de mettre à profit les enseignements du cours INF105 (théorie des langages) afin de créer la grammaire correspondant à notre langage cible.

On utilisera un générateur de parseur (JavaCC ou Antlr) pour implémenter et tester notre grammaire.

On étudiera ensuite le fonctionnement d'un langage assembleur (x86) et traduira (en codant dans notre générateur de parseur) les instructions de notre langage vers des instructions assembleur équivalentes.

Des tests seront effectués pour s'assurer que notre langage se comporte de la manière voulue.

Enfin, si l'avancement du projet  le permet, on essaiera d'ajouter une fonctionnalité à notre langage : les appels de fonctions.

Un exemple de programme d'entrée pourra être : in.txt
Et la sortie correspondante: out.txt

 

Fichiers: 

AttachmentSize
Plain text icon in.txt193 bytes
Plain text icon out.txt1.67 KB