Browse Source

update readme

Arnaud Vergnet 2 years ago
parent
commit
e068e8a01f
1 changed files with 90 additions and 2 deletions
  1. 90
    2
      README.md

+ 90
- 2
README.md View File

@@ -1,7 +1,37 @@
1
-Ce dépôt inclut notre compilateur, un cross assembleur et le code VHDL de notre processeur.
1
+        
2
+Ce dépôt inclut notre compilateur, un cross assembleur et le code VHDL de notre processeur. Il contient
2 3
 
3
-Voici les commandes à entrer dans un terminal pour récupérer, compiler et exécuter le projet
4
+## Fonctionnalités du parser
5
+Déclaration de variables
6
+Affectation de variables
7
+Calculs (addition, soustraction, division, multiplication)
8
+Fonction main
9
+Branches (if, else)
10
+Conditions (!, ||, &&, ==, !=, <, <=, >, >=)
11
+Boucle while
12
+printf
13
+
14
+
15
+## Fonctionnalités du compilateur
16
+Toutes les fonctionnalités du parser sauf les boucles while (par manque de temps).
17
+
18
+## Fonctionnalités du processeur
19
+Affectation, calculs (sauf division), copie, store, load
20
+Pipeline à 5 étage
21
+Gestion des aléas si écriture puis lecture dans le même registre
22
+
23
+## Tests unitaires
24
+Nous avons écrit des tests unitaires pour la table des symboles, dans lesquels nous créons une table des symboles, ajoutons des éléments, et vérifions qu’ils sont bien présents après. Nous testons aussi les erreurs retournées par les fonctions.
4 25
 
26
+## Particularités de l’implémentation
27
+### Tables
28
+Toutes nos tables sont implémentées sous la forme de tableaux. Nous avons préféré cette approche plutôt que des listes chaînées car nous itérons souvent dessus, ce qui est très lent quand les données sont éparpillées dans la mémoire, comme dans le cas des listes chaînées.
29
+Ceci implique cependant que nous avons une taille maximum pour nos tables.
30
+
31
+### 
32
+
33
+## Installation
34
+Voici les commandes à entrer dans un terminal pour récupérer, compiler et exécuter le projet
5 35
 ```shell
6 36
 # Clone le dépôt git avec les submodules
7 37
 git clone --recurse-submodules https://git.etud.insa-toulouse.fr/ysimard/projet_systeme_info.git
@@ -12,4 +42,62 @@ make
12 42
 make test_cross_bin.txt
13 43
 ```
14 44
 
45
+## Description des dépôts
46
+
47
+### Compilateur (compilator-200)
48
+
49
+#### Structure
50
+
51
+Ce dépôt contient tous les fichiers nécessaires au fonctionnement du parser et du compilateur, ainsi que des tests unitaires pour la table des symboles. Il contient aussi un interpréteur (dossier `interpreter`), fourni par les professeurs, pour vérifier le code assembleur généré.
52
+
53
+En plus des fichiers `al.lex` et `as.y` classiques, ce projet contient plusieurs fichiers `C` utilitaires. `asm_instructions` se charge de modifier le tableau d’instruction assembleur et de l’écrire dans un fichier. `symbol_table` s’occupe de modifier et lire la table des symboles. `symbole_table.test.c` execute des tests unitaires sur le fichier précédent. `yacc_util` est un ensemble de fonctions utilitaires pour simplifier la manipulation de la table des symboles et des instructions assembleur, utilisé par `as.y`.
54
+
55
+
56
+#### Compilation et lancement
57
+
58
+Un `Makefile`est fourni pour compiler le projet, qui s’utilise comme suit:
59
+
60
+Compiler le compilateur
61
+```shell
62
+make compilateur
63
+```
64
+Compiler les tests unitaires
65
+```shell
66
+make test
67
+```
68
+Nettoyer le projet
69
+```shell
70
+make clean
71
+```
72
+
73
+Une fois compilé, le compilateur s'exécute de la manière suivante (en remplaçant `INPUT_FILE` par le fichier `C` souhaité et `OUTPUT_FILE` par le fichier destination voulu):
74
+```shell
75
+./compilateur OUTPUT_FILE < INPUT_FILE
76
+```
77
+
78
+Pour lancer les tests unitaires, exécuter la commande suivante:
79
+```shell
80
+./test
81
+ ```
82
+
83
+Pour vérifier l’asembleur à l’aide de l’interpréteur, copier le contenu du fichier de sortie du compilateur dans le fichier `interpreter/input.txt`, compiler l’interpreteur à l’aide de la commande `make`, et executer la commande suivante:
84
+
85
+```shell
86
+./interpreter < input.txt
87
+```
88
+
89
+### Cross-assembleur (crossassembler-2000)
90
+Le cross-assembleur a été écrit en majorité par Paul Faure. Nous l’avons simplement adapté pour notre compilateur et notre processeur.
91
+Il est optimisé car il ne génère par un LOAD et un STORE pour chaque instruction. Il se souvient de quelle donnée est présente dans quel registre.
92
+
93
+#### Compilation et lancement
94
+Compiler
95
+```shell
96
+make
97
+```
98
+Nettoyer le projet
99
+```shell
100
+make clean
101
+```
102
+
15 103
 

Loading…
Cancel
Save