Correction - MIAGE de Nantes

Transcription

Correction - MIAGE de Nantes
Université de Nantes
Région des Pays de La Loire
Feuille de travaux dirigés no 3
Codage des instructions
Exercice 3.1
On souhaite pouvoir programmer un petit robot-tortue comprenant les instructions suivantes :
– avancer n, où n est un entier positif correspondant au nombre de pas à effectuer en ligne droite sur une grille
(voir dessin ci-dessous) ;
– gauche a et droite a, où a est un entier positif compris entre 0 et 180 représentant un angle exprimé en
degrés ;
– trace b, demandant à la tortue de laisser une trace sur le sol (b = 1) ou pas (b = 0).
Un exemple de programme correspondant au dessin ci-dessous est le suivant :
trace 1;
avancer 5;
droite 90;
avancer 4;
droite 90;
avancer 2;
droite 90;
droite 90;
avancer 4;
droite 90;
avancer 3;
droite 90;
avancer 1
avancer 5;
droite 90;
avancer 3;
droite 90;
avancer 2;
1. Proposer un codage binaire de taille minimale
pour les instructions reconnues par la tortue ;
2. Écrire le programme ci-dessus en binaire avec le
codage proposé à la question précédente ;
3. On veut étendre les possibilités de l’instruction
trace pour que la trace laissée puisse désormais
être le dessin d’une lettre codée en ASCII. Que
faut-il changer au codage précédent pour prendre
en compte cette extension ?
4. On veut désormais pouvoir utiliser des structures de boucle de façon à réécrire le code précédent de la façon
suivante :
trace 1;
r0 <- 5;
répéter
avancer r0;
droite 90;
avancer r0;
droite 90;
dec r0;
jusqu’à r0 = 1;
avancer 1;
Pour cela, on ajoute au processeur de la tortue un banc de 4 registres r0 , r1 , r2 , r3 de 8 bits et on étend le jeu
d’instructions de la tortue pour obtenir celui ci-dessous :
Sens
avancer n
gauche n
droite n
trace n
load ri , n
dec ri
bne ri , n, a
avancer ri
gauche ri
droite ri
trace ri
ri ← n
ri ← ri − 1
sauter à l’adresse a si ri 6= n
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
1/3
où n est une constante entière positive sur 8 bits, ri est le registre i et a est une adresse relative dans la
mémoire de la tortue, codée en complément à 2 sur 6 bits.
Proposer un nouveau codage permettant de représenter en mémoire un tel programme ;
5. Donner la représentation du programme précédent en mémoire ;
6. Quelle est la taille maximale d’une boucle avec le codage utilisé ?
5 Correction
1. Codage sur 10 bits :
op
instr
0
avancer
gauche
droite
trace
1
2
3
10 bits
op
n/d/0/1
2. Programme :
1100000001
0000000101
1001011010
0000000101
1001011010
0000000100
1001011010
0000000100
1001011010
0000000011
1001011010
0000000011
1001011010
0000000010
1001011010
0000000010
1001011010
0000000001
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
trace 1
avancer 5
droite 90
avancer 5
droite 90
avancer 4
droite 90
avancer 4
droite 90
avancer 3
droite 90
avancer 3
droite 90
avancer 2
droite 90
avancer 2
droite 90
avancer 1
3. Rien. Il suffit que le paramètre de trace soit désormais un entier sur 8 bits codé dans la partie
données de l’instruction. Cela suppose cependant que l’on considère les caractères de code ASCII
0 et 1 comme invalides ;
4. Codage sur 20 bits :
op
instr
0 avancer n
1 avancer r
2 gauche n
3 gauche r
4 droite n
20 bits
5 droite r
6 trace n
4
2
8
6
7 trace r
8 load ri, n
9 dec ri
op
ri
n
a
10 bne ri, n, a
5. Programme :
0110 00 00000001 000000 # trace 1
1000 00 00000101 000000 # r0 <- 5
0001 00 00000000 000000 # avancer r0
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
2/3
0100
0001
0100
1001
1010
0000
00
00
00
00
00
00
01011010
00000000
01011010
00000000
00000001
00000001
000000
000000
000000
000000
111011
000000
#
#
#
#
#
#
droite 90
avancer r0
droite 90
dec r0
bne r0, 1, -5 (en complément à 2 sur 6 bits = 59)
avancer 1
6. Avec une adresse relative sur 6 bits, on peut sauter en arrière de 32 instructions et en avant de 31
instructions. Donc, on ne peut avoir plus de 32 instructions dans une boucle.
Projet soutenu par le Conseil Régional Des Pays de La Loire dans le cadre des projets ENRC 2008-2009
3/3

Documents pareils