Projet de l'UE "Compilation"
Objectif : L’objectif de ce projet univeritaire est de réaliser un compilateur capable de traduire un code écrit dans le langage StenC en un code assembleur écrit pour une architecture MIPS32 bits pouvant être exécuté par un simulateur comme SPIM ou MARS.
Organisation :
Outils :
Auteurs :
le StenC [Sten-Ci] est un sous ensemble du C auquel on a ajouté un type stencil et un opérateur d’application de stencil.
DATE | DESCRIPTION |
---|---|
2017-11-05 | Début du projet |
2017-11-19 | Première ébauche d’une grammaire reconnaissant le StenC |
2017-11-26 | Génération de code MIPS pour les expressions arithmétiques |
2017-11-27 | Génération de listes d’expressions arithmétiques + affectations (entier) |
2017-11-29 | Génération du code MIPS des fonctions printf et printi |
2017-11-30 | Génération de code MIPS pour les conditions booléennes |
2017-12-02 | Génération de code MIPS pour les structures de contrôle (if, else, for, while) |
2017-12-09 | Génération de code MIPS pour les tableaux et références de tableaux |
2017-12-10 | Rendu officiel du projet, passage de ce projet en public |
Cette section décrit la spécification complète de nôtre compilateur c’est-à-dire tout ce qu’il est capable de
reconnaître et de produire en terme de code assembleur.
Opérateurs/Instructions | Support | ||
---|---|---|---|
expr + expr | x | ||
expr - expr | x | ||
expr * expr | x | ||
expr / expr | x | ||
- expr | x | ||
( expr ) | x | ||
id == id | x | ||
id != id | x | ||
id < id | x | ||
id > id | x | ||
id <= id | x | ||
id >= id | x | ||
cond && cond | x | ||
cond \ | \ | cond | x |
! cond | x | ||
if (cond) {…} | x | ||
if (cond) {…} else {…} | x | ||
while (cond) {…} | x | ||
for (init; cond; it) {…} | x | ||
printf(“chaine”) | x | ||
prini(id) | x | ||
printi(42) | x | ||
tab[] = {…} | x | ||
tab[i1]…[in] = id | x | ||
tab[i1]…[in] = 42 | x | ||
tab[i1][in]= tab[i1][im] | x | ||
id = tab[i1]…[in] | x | ||
int f(a1,…, an) {…} | |||
stencil s{1,2} = {…} | |||
id $ s |
Une version plus détaillée est disponible dans le rapport de projet “rapport.pdf”