diff options
Diffstat (limited to 'doc/description.tex')
-rw-r--r-- | doc/description.tex | 40 |
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. |