summaryrefslogtreecommitdiff
path: root/doc/description.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/description.tex')
-rw-r--r--doc/description.tex40
1 files changed, 40 insertions, 0 deletions
diff --git a/doc/description.tex b/doc/description.tex
new file mode 100644
index 0000000..5def498
--- /dev/null
+++ b/doc/description.tex
@@ -0,0 +1,40 @@
+\chapter{Description}
+\paragraph{}
+Ce projet a pour but l'étude d'un microprocesseur en programmant
+d'abord un simulateur pour ce microprocesseur, puis un assembleur
+correspondant aux instructions définies pour le simulateur.
+\paragraph{}
+Le processeur que nous nous proposons de simuler est un processeur
+du type "\textit{Load \& Store}". Il possède une quantité non
+négligeable de registres, mais en contrepartie, toutes les instructions
+doivent travailler directement sur ces registres. Il n'existe que deux
+instructions permettant de lire ou d'écrire un mot en mémoire: les
+instructions LD pour \textit{Load} et ST pour \textit{Store}.
+\paragraph{}
+Pour l'adressage, nous avons choisi de repérer chaque mot mémoire de 32 bits
+par une adresse unique, vu que les instructions ne manipulent que des mots
+mémoires sur 32 bits. En clair, même si l'assembleur gère des zones de données
+dont les éléments sont de taille inférieur à 32 bits, (comme HALF, BYTE ou ASCII)
+ils seront "compactés" en 32 bits et alignés sur des mots mémoires 32 bits.
+\paragraph{}
+Notre processeur supporte les opérations de base programmées sur une ALU
+simplissime: ADD, SUB, MUL, DIV, AND, OR, SHL, SHR. De plus, le contrôleur
+est capable d'effectuer des sauts conditionnels simples.
+\paragraph{}
+L'assembleur est capable de reconnaître les mnémoniques nécessaires à la
+création d'un fichier binaire correspondant aux instructions supportées
+par le simulateur. De plus, il est capable de gérer quelques pseudo-instructions:
+\begin{itemize}
+\item START pour définir le point d'entrée du programme.
+\item ASCII pour stoker une chaîne ASCIIZ.
+\item BYTE pour stoker une série d'octets consécutifs.
+\item WORD pour stoker une série de mots 32 bits consécutifs.
+\item HALF pour stoker une série de mots 16 bits consécutifs.
+\item SPACE pour réserver une série de mots dans le segment \textit{data}
+\end{itemize}
+L'encodage choisi est le little endian. Cette précision est nécessaire vu que
+le simulateur fonctionne sur des mots de 32 bits. Ainsi, la pseudo instruction
+\begin{verbatim}
+Texte ASCII "ABCDEFG"
+\end{verbatim}
+va encoder effectivement les deux mots mémoires consécutifs: 0x44434241, 0x474645.