Clean
This commit is contained in:
parent
b6f5abf852
commit
25efac091c
2 changed files with 3 additions and 48 deletions
45
ReadMe.md
45
ReadMe.md
|
@ -1,45 +0,0 @@
|
||||||
# Processeur sécurisé - Interpreteur
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Afin de pouvoir tester le code que nous avons compilé depuis le C avec notre compilateur, nous avons crée un interpreteur pour simuler l'execution du code assembleur
|
|
||||||
|
|
||||||
# Utilisation du cross assembleur
|
|
||||||
|
|
||||||
Un Makefile a été inclus au sous module Interpreteur afin de simplifier son utilisation. Ainsi, afin de compiler tout l'Interpreteur, il suffit de de rentrer la commande.
|
|
||||||
``` bash
|
|
||||||
make build
|
|
||||||
```
|
|
||||||
Pour lancer l'Interpretation du code qui aura été préalablement généré avec notre compilateur, il suffit de lancer la commande
|
|
||||||
``` bash
|
|
||||||
cat FicherASM | ./rondoudou_interpreter
|
|
||||||
```
|
|
||||||
Les prints et gets du programme auront lieu dans le terminal.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
NB : Il est possible de rester au niveau du projet général. Un Makefile est aussi présent. Pour compiler l'Interpreteur uniquement :
|
|
||||||
``` bash
|
|
||||||
make compile QUOI="interpreteur"
|
|
||||||
```
|
|
||||||
Pour compiler le projet en entier :
|
|
||||||
``` bash
|
|
||||||
make compile QUOI="all"
|
|
||||||
```
|
|
||||||
|
|
||||||
Pour interpreter le fichier ***file_name.memasm*** :
|
|
||||||
``` bash
|
|
||||||
make exec SOURCE="file_name" QUOI="interprete"
|
|
||||||
```
|
|
||||||
Pour compiler, cross assembler et interpreter le fichier ***file_name.c*** et générer les fichiers ***file_name.memasm***, ***file_name.regasm***, ***file_name.bin***, et, copier le code binaire dans le fichier ***../Processeur/Processeur.srcs/sources1/new/MemoireInstructions.vhd*** :
|
|
||||||
``` bash
|
|
||||||
make exec SOURCE="file_name" QUOI="all"
|
|
||||||
```
|
|
||||||
|
|
||||||
# Implémentation
|
|
||||||
|
|
||||||
L'implémentation a été réalisée grâce à Lex/Yacc. Le parseur charge le programme dans un buffer, puis une méthode d'execution est lancée.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#define TAILLE_MEMOIRE (64)
|
#define TAILLE_MEMOIRE (64)
|
||||||
#define TAILLE_PILE_APPELS (16)
|
#define TAILLE_PILE_APPELS (16)
|
||||||
|
|
||||||
#define SECURISED (1)
|
#define SECURED (1)
|
||||||
|
|
||||||
|
|
||||||
/**************************************************/
|
/**************************************************/
|
||||||
|
@ -194,7 +194,7 @@ void execute() {
|
||||||
printf("%c", mem[check_adresse(ebp + programme[eip].param1)]);
|
printf("%c", mem[check_adresse(ebp + programme[eip].param1)]);
|
||||||
|
|
||||||
} else if (programme[eip].instruction == CALL) {
|
} else if (programme[eip].instruction == CALL) {
|
||||||
if (SECURISED) {
|
if (SECURED) {
|
||||||
pile[check_adresse_pile(esp)] = ebp;
|
pile[check_adresse_pile(esp)] = ebp;
|
||||||
esp++;
|
esp++;
|
||||||
pile[check_adresse_pile(esp)] = eip + 1;
|
pile[check_adresse_pile(esp)] = eip + 1;
|
||||||
|
@ -209,7 +209,7 @@ void execute() {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (programme[eip].instruction == RET) {
|
} else if (programme[eip].instruction == RET) {
|
||||||
if (SECURISED) {
|
if (SECURED) {
|
||||||
esp--;
|
esp--;
|
||||||
eip = pile[check_adresse_pile(esp)] - 1;
|
eip = pile[check_adresse_pile(esp)] - 1;
|
||||||
esp--;
|
esp--;
|
||||||
|
|
Loading…
Reference in a new issue