\chapter{Manuel d'utilisation}

%lignes de commandes des progs

%commandes du mode debug du simul

\section{L'Assembleur : compilo} 

Si l'on lance au prompt du shell la commande ./compilo, on obtient le resultat suivant :

\begin{verbatim}
$ ./compilo
Assembler v1.0

Usage: compilo program.asm objet.out
\end{verbatim}

Ceci nous indique donc les traditionnels arguments a passer à l'assembleur.

On invoquera donc a chaque fois que l'on aura besoin l'assembleur,
sachant que sa ligne de commande demande uniquement le nom du fichier d'entrée
et le nom du fichier de sortie.

NB : Il est à noter que la présence du fichier instructions.txt décrivant le
méta-langage est indispensable à toute exécution de compilo.

Exemple d'exécution :

\begin{verbatim}
$ ./compilo ../samples/recherche.s recherche.o
Assembler v1.0


Performing initialisation...

   o Initialising the meta engine...    Done!
   o Meta language loading...           Done!
   o Initialising the assembler core... Done!
   Assembling file ../samples/recherche.s...
   Generating output file recherche.o...
   Statistics: 29 words of text, 297 words of data, and 0 words reserved.
   19 symbols generated with 9 internal and 10 external.
   
   Performing shutdown...
   
   Exitting, bye!
   
\end{verbatim}

\section{L'Editeur de liens : linker}
La ligne de commande que nous livre l'exécution sans argument du programme 'linker' est la suivante:
\begin{verbatim}
$ ./linker
Linker v1.0

Usage: linker obj1 [obj2 [obj3 [...]]] binary
\end{verbatim}

Nous devons donc spécifier au moins un fichier objet, et un nom de fichier binaire de sortie.

Exemple d'exécution:
\begin{verbatim}
$ ./linker recherche.o recherche
Linker v1.0


Performing initialisation...

 o Initialising the linker...    Done!
 Linking files...
 Generating output file...
 Statistics: 29 words of text, 297 words of data and reserving 0 words
 Output file size: 343 words containing 10 relocating offsets.
 
 Performing shutdown...
 
 Exitting, bye!
\end{verbatim}

\section{Le Simulateur : simul }
\subsection{la ligne de commande}
Le nom de la commande à lancer pour exécuter le simulateur est 'simul'. La ligne de commande est la suivante:
\begin{verbatim}
$ ./simul 
Simul v1.0

Usage: linker [-s] [-d] binary
\end{verbatim}
L'option -s sert à sélectionner une ALU différente, et plus instable. L'option -d sert à déclanger le debugger dès la
première instruction. Bien évidemment, il faut donner le nom d'un fichier binaire à exécuter.

\subsection{le mode interactif}
Lors de l'exécution du simulateur, le programme exécuté tourne jusqu'à ce qu'une instruction HALT est rencontrée. Pour
interrompre l'exécution et déclanger le debugger, il est possible de frapper la combinaison de touche CTRL-C. Si l'option
-d a été spécifiée sur la ligne de commande, nous obtenons le même résultat:

\begin{verbatim}
 o Initialising the simulator...    Done!
   R00      R01      R02      R03      R04      R05      R06      R07   
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
   R08      R09      R10      R11      R12      R13      R14      R15   
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
   R16      R17      R18      R19      R20      R21      R22      R23   
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
   R24      R25      R26      R27      R28      R29      R30      R31   
00000000 00000000 00000000 00000000 00000002 000027FF 00000002 00000000 
Rg: 00000000  | Rd: 00000000 | Flag: 00000000 | PC: 00000000
Opcode: 0A, extension: 00, champ1: 00, champ2: 00, champ3: 00
00000000:0000000A - 00000000 - 00000000 > 
\end{verbatim}
Cette interface nous présente l'ensemble des registres du CPU, ainsi que les quelques flags spéciaux.
De plus, les champ de l'instruction suivante sont décodés, et la dernière ligne nous indique les trois mots mémoire
pour le compteur ordinal en cours. Le prompt > nous invite à taper une commande parmi:

\begin{verbatim}
> Help:
G: go
P: Proceed
R: display registers
Q: quit
\end{verbatim}

Go stoppe le debugger et relance l'exécution du CPU. Proceed avance d'une instruction. Display registers réaffiche la
page des registres, au cas où l'écrant ait été corrompu par l'exécution du programme. Enfin, quit permet de sortir immédiatement
du simulateur.