Architecture I500 TD MIC1
Antoine Claudé
1
samedi 28 avril 2007
TP de microprogrammation sur machine
MIC-1
Exercice 1
Installation réussie avec succès!
Exercice 2
Question 1
Quelle beau bytecode!
Question 2
Assemblage réussi !
Question 3
Le fichier mic1ijcm.mal correspond au jeu de micro instructions implémenté dans la machine MIC-1. Il
est structuré en 2 parties distinctes :
La première partie liste les adresses mémoire correspondante à la première micro instruction
associée à chaque instruction de bytecode. (On peut possiblement déduire le nombre de micro
instructions associées par différence d'adresse)
Les micros instructions en elles-mêmes pour chaque instruction bytecode.
L'autre possibilité d'implémentation aurait été d'utiliser un séquenceur câblé (instructions RISC).
Question 4
IN : L'instruction IN attend une donnée sur l'entrée standard (définie par le registre OPC) puis
l'empile (d'où le SP=SP+1; et wr;).
OUT : L'instruction OUT dépile la dernière donnée de la pile (SP=SP-1;) et la lis (rd;) afin de
l'afficher sur la sortie standard (définie par le registre OPC).
Question 5
OK !
Question 6 & 7
Information dans la fenêtre
Signification
Type
Valeur initiale
MAR
Memory Address Register
A
0x0
MDR
Memory Data Register
D
0x0
Architecture I500 TD MIC1
Antoine Claudé
2
samedi 28 avril 2007
PC
Program Counter
A
0xFFFFFFFF
MBR
Memory Byte Register
I
0x0
SP
Stack Pointer
A
0x8000
LV
Local Variable
A
0xC000
CPP
Constant Pool Pointer
A
0x4000
TOS
Top Of Stack
D
0x0
OPC
A
0x0
H
Temporary Register
D
0x0
Microinstruction
Microinstruction active
MI
reset
Next Microinstruction
Prochaine microinstruction
MI
goto 0x2
MPC
Micro Program Counter
A
0x0
ALU
Arithmetic Logic Unit
O
0 AND 0 = 0x0
Question 8
On remarque que l'enchaînement de micro instruction tourne en rond. Et enchaîne indéfiniment les 2
même instructions (goto 0x2 etPC=PC+1;fetch;goto(MBR);).
Cela correspond à la succession de Main1 et nop1.
Lorsque qu'aucune adresse n'est spécifiée, MBR prend la valeur 0x0 qui est l'adresse de nop1.
De plus, on en déduit d'après la valeur du goto (nop1 fait un goto Main1;)que l'adresse de Main1 est
0x2.
Question 9 & 10
N° step
PC
MPC
Action
0
0xFFFFFFFF
0x0
Initialisation
Appel au main1 et MBR=0x0
1
0xFFFFFFFF
0x2
2
0x0
0x0
nop1 -> goto main1
3
0x0
0x2
4
0x1
0xFC
main1 & MBR = @ de in1
Micro instructions de in
5
0x1
0x8D
6
0x1
0x8E
7
0x1
0x8F
8
0x1
0x90
9
0x1
0x2
10
0x2
0x59
main1 & MBR = @ de dup1
Micro instruction de dup
11
0x2
0xB
12
0x2
0x2
13
0x3
0x10
main1 & MBR = @ de bipush1
Architecture I500 TD MIC1
Antoine Claudé
3
samedi 28 avril 2007
14
0x3
0x16
Micro instructions de bipush
(fetch de l'opérande)
15
0x4
0x17
Question 11
PC est incrémenté à chaque appel de main1, ce qui correspond à chaque changement d'instruction (de
bytecode) puisque que l'on fait appel à un nouveau fetch et on charge l'instruction dans MBR. PC
compte donc le nombre d'instructions.
MPC n'est modifié qu'entre 2 micros instructions successives d'une même instruction. Il ne s'agit pas
d'une incrémentation mais de l'adresse de la prochaine micro instruction puisque l'on peut voir que le
goto de chaque micro instruction non terminale fait appel à l'adresse contenue dans MPC. Lors d'une
micro instruction terminale, MPC=0x2=@ de main1.
Question 12
Bah... heu ça marche ! Toutes les entrées clavier sont immédiatement recopiées et affichées à l’écran.
Question 13
cf. fichier ci joint ! (countJ.jas / countJ.ijvm)
Question 14
On remarque que si l'on entre 'A' dans le programme, il inscrit des 'J' à l'écran. Pour être très précis, il
en écrit 17 ! Cela s'explique par le fait que dans la suite logique des caractères UNICODE, le 'A' se
trouve 8 places après le '9' (8+9=17). Donc lors de la conversion en entier (par soustraction de
0x30), on obtient logiquement 17 (UNICODE(A)-0x30=(UNICODE(9)+8)-0x30=9+8=17). Idem pour
tous les autres caractères UNICODE.
THE END ...
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !