1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
\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.
|