Skip to content

Repository files navigation

IFCC - Compilateur pour un sous-ensemble de C

Table des matières

Introduction

IFCC est un compilateur développé pour traduire du code source écrit dans un sous-ensemble de C en code assembleur Intel x86 ou RISC-V.

Utilisation

Compilation du compilateur IFCC

Pour compiler IFCC, suivez ces étapes :

  1. Assurez-vous que vous avez make, ainsi que antlr et son runtime C++ installés sur votre système. Vous pouvez installer antlr via le script install-antlr.sh.
  2. Allez dans le répertoire racine du projet IFCC.
  3. Créez le fichier config.mk correspondant à votre installation d'ANTLR, ou utilisez un des fichiers fourni DI.mk (installation via le script), fedora.mk, ubuntu.mk :
ln -s <fichier>.mk config.mk
  1. Lancez la commande make.

Compilation d'un programme

Une fois IFCC compilé, vous pouvez utiliser le compilateur pour traduire votre programme écrit dans le sous-ensemble de C pris en charge. Voici comment procéder :

  1. Écrivez votre programme dans un fichier avec l'extension .c.
  2. Utilisez la commande suivante pour compiler votre programme :
./ifcc [-t target] [-o <nom_fichier_cible>.s] [-d] [-s] <nom_fichier_source>.c
  • L'option -t target vous permet de spécifier l'architecture cible pour la génération de l'assembleur. Vous pouvez choisir entre x86-64 pour Intel x86 et rv64 pour RISC-V. Par défaut, le code est compilé en assembleur Intel x86.
  • L’option -o <nom_fichier_cible>.s permet de spécifier le nom du fichier de sortie pour le code assembleur généré. Par défaut, le nom du fichier de sortie est ./out.s.
  • L'option -s permet d'afficher le code généré dans la sortie standard
  • L'option -d permet d'afficher une représentation de la représentation intermédiaire dans la sortie d'erreur

Assemblage et édition des liens

Après avoir généré le code assembleur, vous devez l'assembler et le linker en fonction de l'architecture cible. Selon votre machine, vous pouvez par exemple procéder comme suit :

  • Pour assembler et linker le code assembleur en code exécutable Intel x86 :
gcc <nom_fichier_source>.s [-o <nom_executable>]
  • Pour assembler et linker le code assembleur en code exécutable RISC-V :
riscv64-linux-gnu-gcc <nom_fichier_source>.s [-o <nom_executable>]

Par défaut, le nom de l’exécutable généré est ./a.out.

Exécution du programme

Une fois que vous avez obtenu l'exécutable, vous pouvez l'exécuter en utilisant la commande suivante :

./a.out

Si vous avez compilé en RISC-V et souhaitez exécuter le programme sur un émulateur, veuillez utiliser l'émulateur approprié pour l'architecture RISC-V.

Tests

IFCC est livré avec un ensemble de tests d'intégration pour vérifier son bon fonctionnement. Les tests se trouvent dans le dossier tests/testfiles/. Vous pouvez exécuter tous les tests en utilisant la commande suivante :

make check

Cela lancera les tests avec l'architecture Intel x86 et RISC-V. Vous pouvez également spécifier make check-x86 ou make check-rv64 pour exécuter les tests sur une architecture spécifique.

Documentation

Le code est documenté via dowygen, pour générer la documentation en local, éxécuter make doc.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages