RATTRAPAGE Projet P1 - Compilation d'un petit langage vers MIPS
Pour ce projet vous allez devoir écrire un compilateur pour des expressions arithmétiques. Le fichier principalement à modifier est le fichier compile.ml. Vous êtes aussi fortement invités à ajouter des tests dans le dossier tests/ et écrire un fichier README décrivant les choix que vous avez faits.
L'archive à rendre doit contenir le dossier complet du compilateur mais nettoyée ; c'est à dire qu'il ne traine pas de fichiers inutiles ou produits par le compilateur. Vous pouvez éliminer les fichiers produits par le compilateur avec dune clean et l'on doit pouvoir compiler votre compilateur avec dune build.
Dans un premier temps vous derez compiler les expressions (sans Call) et les statements print et read. Vous devrez ensuite gérer les variables globales. Les valeurs des variables globables sont à stocker dans le segment data (par exemple si on met la variable x au label var_x dans data, on peut lire x dans V0 avec Lw(V0 Alab("var_x")) et la modifier avec Sw(V0,Alab("var_x"))). Vous êtes libres sur la façon de compiler les expressions mais il est conseillé (dans un premier temps ua moins) de faire en sorte que le code produit pour une sous-expression stocke sur le sommet de la pile son résultat (en ne décalant SP que de 4 donc).
Le projet comprend plusieurs extensions (à ne faire qu'une fois que la compilation du reste marche correctement et est bien testée) :
- une première extension consiste à gérer les let-in en les stockant sur la pile et à vérifier pour chaque variable qu'elle est bien définie
- une seconde extension consiste à optimiser un peu la compilation des sous-expressions en mettant sur v0 le résultat
- une troisième extension consiste à supporter les fonctions.
Si le projet est fait à deux, il faut que l'un des deux soumette le projet complet incluant les deux noms. L'autre n'a rien à soumettre.
- 3 octobre 2023, 18:22