Browse Source

Mise à jour ReadMe

Paul Faure 2 years ago
parent
commit
80d702514d
1 changed files with 11 additions and 13 deletions
  1. 11
    13
      ReadMe.md

+ 11
- 13
ReadMe.md View File

@@ -3,28 +3,26 @@
3 3
 #### Réalisé par : TALI Elies et FAURE Paul
4 4
 
5 5
 
6
-\subsection{Présentation du système}
6
+### Présentation du système
7 7
 
8 8
 Afin de pouvoir utiliser le code que nous avons compilé depuis le C avec notre compilateur sur notre processeur, il faut d'abord cross assembler le code assembleur orienté mémoire vers un langage d'assemblage orienté registres. Il faut au final refaire un autre compilateur.
9 9
 
10
-\subsection{Utilisation du cross assembleur}
10
+### Utilisation du cross assembleur
11 11
 
12
-Un Makefile a été inclus au sous module CrossAssembleur afin de simplifier son utilisation. Ainsi, il suffit de de rentrer la commande \texttt{make build} afin de compiler tout le CrossAssembleur. Pour lancer le CrossAssemblage du code qui aura été préalablement généré avec notre compilateur, il suffit de lancer la commande \texttt{cat FicherASM | ./rondoudou\_cross\_assembleur}. Le résultat se trouvera dans les fichiers \texttt{output.asm} et \texttt{output.bin}. 
12
+Un Makefile a été inclus au sous module CrossAssembleur afin de simplifier son utilisation. Ainsi, il suffit de de rentrer la commande ***make build*** afin de compiler tout le CrossAssembleur. Pour lancer le CrossAssemblage du code qui aura été préalablement généré avec notre compilateur, il suffit de lancer la commande ***cat FicherASM | ./rondoudou_cross_assembleur***. Le résultat se trouvera dans les fichiers *output.asm* et *output.bin*. 
13 13
 
14
-\smallskip
15
-\smallskip
16
-NB : Il est possible de rester au niveau du projet général. Un Makefile est aussi présent. \texttt{make projet} pour compiler le projet en entier. \texttt{make exec SOURCE="file\_name" QUOI="cross\_asm"} ceci va cross assembler le fichier \texttt{file\_name.memasm} en \texttt{file\_name.regasm} et \texttt{file\_name.bin}. \texttt{make exec SOURCE="file\_name" QUOI="all"} ceci va compiler et cross assembler le fichier \texttt{file\_name.c} et générer les fichiers \texttt{file\_name.memasm}, \texttt{file\_name.regasm} et \texttt{file\_name.bin}. 
14
+NB : Il est possible de rester au niveau du projet général. Un Makefile est aussi présent. ***make projet*** pour compiler le projet en entier. ***make exec SOURCE="file_name" QUOI="cross_asm"*** ceci va cross assembler le fichier *file_name.memasm* en *file_name.regasm* et *file_name.bin*. ***make exec SOURCE="file_name" QUOI="all"*** va compiler et cross assembler le fichier *file_name.c* et générer les fichiers *file_name.memasm*, *file_name.regasm*, *file_name.bin*, et, va copier le code binaire dans le fichier *../Processeur/Processeur.srcs/sources1/new/MemoireInstructions.vhd*. 
17 15
 
18
-\subsection{Implémentation}
16
+### Implémentation
19 17
 
20
-L'implémentation a là aussi été réalisée grâce à Lex/Yacc. La gestion des registres est faite avec une politique de priorité LRU.
18
+L'implémentation a été réalisée grâce à Lex/Yacc. La gestion des registres est faite avec une politique de priorité LRU.
21 19
 
22
-\subsection{Points clés}
20
+### Points clés
23 21
 
24
-\begin{itemize}
25
-    \item Gestion des registres : Un tableau associe à chaque adresse un registre ($-1$ si aucun registre n'est affecté) et enregistre si la valeur en mémoire est à jour. Il existe deux fonctions permettant de demander des registres, une en lecture une en écriture. Ces deux fonctions renvoient le numéro du registre disponible et modifie la table comme il se doit. Si le registre était déjà associé à une adresse donc la valeur a été modifiée, elle est STORE en mémoire. Si la demande a été faite en lecture, on LOAD la valeur, en écriture non puisqu'elle sera écrasée. \textbf{TOUJOURS DEMANDER EN LECTURE AVANT DE DEMANDER EN ECRITURE}. 
26
-    \item Gestion des sauts : L'ajout des STORE et LOAD relatifs à la gestion des registre modifie les adresse des sauts. Pour chaque instruction orienté mémoire, on compte le nombre d'instructions orienté registre. Ainsi, on garde une table qui à chaque numéro d'instruction orienté mémoire associe le numéro d'instruction orienté registre correspondant. Lors de l'écriture du code orienté registre, on remplace les adresses des sauts grâce a cette table.
27
-\end{itemize}
22
+
23
+- Gestion des registres : Un tableau associe à chaque adresse un registre (-1 si aucun registre n'est affecté) et enregistre si la valeur en mémoire est à jour. Il existe deux fonctions permettant de demander des registres, une en lecture une en écriture. Ces deux fonctions renvoient le numéro du registre disponible et modifie la table comme il se doit. Si le registre était déjà associé à une adresse donc la valeur a été modifiée, elle est STORE en mémoire. Si la demande a été faite en lecture, on LOAD la valeur, en écriture non puisqu'elle sera écrasée. **TOUJOURS DEMANDER EN LECTURE AVANT DE DEMANDER EN ECRITURE**. 
24
+
25
+- Gestion des sauts : L'ajout des STORE et LOAD relatifs à la gestion des registre modifie les adresse des sauts. Pour chaque instruction orienté mémoire, on compte le nombre d'instructions orienté registre. Ainsi, on garde une table qui à chaque numéro d'instruction orienté mémoire associe le numéro d'instruction orienté registre correspondant. Lors de l'écriture du code orienté registre, on remplace les adresses des sauts grâce a cette table.
28 26
 
29 27
 
30 28
 

Loading…
Cancel
Save