Fiche 2 : Le langage machine

publicité
—ESIL/Dépt Informatique A1 – 06/07—
—TD Logiciel de base—
Fiche 2 : Le langage machine
Léon Mugwaneza
1/ Le jeu d’instructions d’un nouveau processeur comprend :
- 7 instructions avec deux champs adresses de 15 bits chacun et un champ registre de 3 bits ;
- 250 instructions avec un champ adresse de 15 bits et un champ registre de 3 bits ;
- 50 instructions sans champ adresse ni champ registre.
a) Quelle est le nombre de bits d’une instruction?
b) Proposer un codage des instructions.
2/ Un processeur a des instructions codées sur un seul mot de 16 bits, ses adresses mémoire sont sur 6 bits. Certaines
instructions sont à une adresse, d’autres à deux adresses. S’il y a n instructions à deux adresses, quel est le nombre
maximum d’instructions à une adresse? (on suppose que le seul mode d’adressage utilisé est l’adressage direct
mémoire).
3/ Soit un processeur à une adresse disposant d’un accumulateur. Ce processeur utilise 3 modes d’adressage pour
désigner les opérandes : immédiat, direct mémoire et indirect mémoire. Dans la notation symbolique pour les
instructions, un opérande comprend deux parties : le mode d’adressage et un entier (le mode d’adressage indique la
façon d’interpréter l’entier). L’instruction LOAD permet de charger dans l’accumulateur le mot mémoire dont
l’adresse est spécifiée par l’opérande.
Etant données les valeurs des mots mémoire1 ci-dessous:
- le mot d’adresse 20 contient la valeur 56 ;
- le mot d’adresse 32 contient la valeur 60 ;
- le mot d’adresse 40 contient la valeur 72 ;
- le mot d’adresse 56 contient la valeur 40.
Quelles sont les valeurs chargées dans l’accumulateur, après exécution des instructions suivantes?
a) LOAD IMMEDIAT 20
b) LOAD INDIRECT 20
c) LOAD DIRECT 32
d) LOAD DIRECT 60
e) LOAD IMMEDIAT 32
f) LOAD INDIRECT 40
4/ Le mode d’adressage basé implique la définition de quatre paramètres :
L1 : le nombre de bits du champ spécifiant le registre de base ;
L2 : le nombre de bits du champ spécifiant le déplacement ;
L3 : le nombre de bits du registre de base ; et
L4 : le nombre de bits des adresses mémoire (émises par le processeur).
a) Combien d’emplacements mémoire distincts peut-on référencer dans ce mode?
b) Quelle est la fraction de la mémoire qui peut être adressée?
5/ Comparer les machines à 0, 1, 2 ou 3 adresses en écrivant, pour chacune de ces machines, un programme pour
calculer la valeur de la variable x donnée par l’expression :
x= ((a/b)*c)-((d-e)*f)
Pour les machines à 2 adresses et celles à 3 adresses, on considérera le cas des machines "pures" (les instructions
prennent leurs opérandes en mémoire et rangent leur résultat en mémoire), et le cas de machines "mixtes" (2 ou 3
adresses avec registres adressables). Les instructions disponibles sur chaque machine sont données par le tableau
suivant :
1
0 adresse
1 adresse
2 adresses
3 adresses
PUSH L
POP L
ADD
SUB
MUL
DIV
LOAD L
STORE L
ADD L
SUB L
MUL L
DIV L
MOV X,Y
ADD X,Y
SUB X,Y
MUL X,Y
DIV X,Y
ADD X,Y,Z
SUB X,Y,Z
MUL X,Y,Z
DIV X,Y,Z
Etant données les adresses des mots, quelles sont les tailles possibles pour un mot ?
1/3
—ESIL/Dépt Informatique – 06/07—
—TD Logiciel de base—
fiche 2
L est une adresse mémoire sur 16 bits (mode d’adressage direct mémoire). X, Y et Z spécifient, soit une adresse
mémoire sur 16 bits, soit un numéro de registre sur 4 bits.
Pour toutes les machines, le code opération est représenté sur 1 octet2. La machine à 0 adresse utilise une pile
d’évaluation à l’intérieur du processeur, et la machine à une adresse dispose d’un registre accumulateur. Les
machines "mixtes" disposent chacune de 8 registres et leurs instructions portent indifféremment sur toute
combinaison entre mémoire et registres. MOV X, Y affecte Y à X, SUB X,Y soustrait Y à X (résultat dans X) et SUB
X,Y, Z soustrait Z à Y et range le résultat dans X 3.
Combien de bits sont nécessaires à chaque machine pour stocker le programme de calcul de x?
6/ L’instruction MOV REG, ADDR signifie « REG Å M[ADDR]» sur le processeur Pentium II. Pour réaliser la même
opération sur l’ultraSPARC II, l’instruction LOAD ADDR, REG doit être utilisée. Pourquoi l’ordre des opérandes
est-il différent?
7/ Processeur à 3 instructions ( examen 96/97 « révisé »)
Dans la course à la réduction du nombre d’instructions d’un processeur, la société MISC (Minimal Instruction Set
Computers) vient de définir un nouveau processeur : le processeur TIC (Three Instructions Computer). Ce nouveau
processeur dispose d’une pile d’évaluation et d’un registre compteur ordinal (PC). Il utilise 3 modes d’adressage:
l’adressage direct, l’adressage immédiat, et l’adressage relatif compteur ordinal (relatif PC).
Le processeur TIC a, comme son nom l’indique, 3 instructions : push, pop et sbn (substract and branch if negative).
- push a (modes d’adressage direct ou immédiat) a pour effet d’empiler au sommet de la pile
d’évaluation l’opérande spécifié par a.
- pop a (mode d’adressage direct) a pour effet de dépiler le sommet de la pile d’évaluation et de le ranger
à l’adresse a.
- sbn a (mode d’adressage relatif PC) a pour effet de soustraire le sommet de pile à l’élément “juste en
dessous”, de remplacer les deux opérandes par le résultat de la soustraction (qui devient donc le
nouveau sommet de pile). En outre, si le résultat de la soustraction est strictement négatif, l’exécution
continue à l’adresse spécifiée par l’opérande a, sinon l’exécution continue à l’instruction qui suit
l’instruction courante.
On utilisera les notations suivantes pour les modes d’adressage (N est un nombre entier positif) :
(N) : adressage direct
N , -N : adressage immédiat
.+ N : adressage relatif PC (branchement en avant)
.-N : adressage relatif PC (branchement en arrière)
Comme chez leurs prédécesseurs, dans les ordinateurs à base de TICs les adresses mémoire sont des adresses
d’octets.
Question 1
On suppose que les adresses et les constantes sont codées sur 28 bits au plus.
a) Quel est le nombre de bits nécessaires pour coder une instruction TIC?
b) Proposez un codage pour les instructions du processeur TIC.
c) Quelle est la taille («naturelle») du « mot machine » dans le processeur TIC?
Question 2 : programmation du TIC
a) Donnez une séquence d’instructions TIC équivalente à l’instruction
bra 50 # branch always
qui réalise un branchement relatif inconditionnel à l'adresse PC+50 (en supposant que PC a déjà été mis à jour
dans la phase fetch pour pointer sur l'instruction suivante).
b) Donnez une séquence d'instructions TIC pour réaliser l'opération :
M[1000] Å M[1004] + M[1008]
2
3
En prévision des extensions futures
Même chose pour DIV (division), ADD (addition) et MUL (multiplication)
2/3
—ESIL/Dépt Informatique – 06/07—
—TD Logiciel de base—
fiche 2
c) On suppose que le mot mémoire d’adresse 1000 contient un nombre entier positif n. Ecrire un programme TIC
qui calcule la somme des n premiers entiers naturels non nuls et range le résultat à l’adresse 1004. On pourra
traduire l'algorithme suivant4 :
Algorithme Sigma
précondition : un entier n >= 0 donné
postcondition : la variable SOMME contient la somme des n premiers entiers
variables : SOMME, COMPTEUR : entiers
debut :
SOMME Å0
COMPTEUR Å n
(1)
si COMPTEUR < 1 alors aller en (2)
sinon
SOMME Å SOMME + COMPTEUR
COMPTEUR Å COMPTEUR - 1
finsi
aller en (1)
(2) # on peut utiliser le résultat qui est dans SOMME
fin
8/ Le tableau ci-dessous donne le contenu de la mémoire principale d’un ordinateur à base de MIPS R2000. Chaque
colonne indique l’adresse d’un octet et la valeur de l’octet en notation hexadécimale.
0x3FF
F
A0
0x4000
0x4001
0x4002
0x4003
0x4004
0x4005
0x4006
0x4007
0x4008
00
40
D5
C2
41
50
00
AB
CD
La taille des registres du processeur est de 32 bits, et on s’intéresse au mot mémoire (32 bits) d’adresse 0x4000.
a) Supposons que le processeur de notre ordinateur est configuré en mode «little-endian» :
(i) En supposant que le mot mémoire d’adresse 0x4000 contient un nombre «réel» au format IEEE 754 simple
précision, donnez la valeur de ce nombre en notation décimale avec virgule fixe.
(ii) En supposant que le mot mémoire d’adresse 0x4000 contient un nombre entier relatif représenté en binaire
complément à 2, donnez la valeur de ce nombre en notation décimale (on pourra se contenter de ne donner
la valeur que sous la forme d’une somme de puissances de 2) .
b) Supposons maintenant que le processeur de notre ordinateur est «big-endian» :
(i) Si le mot mémoire d’adresse 0x4000 contient un nombre «réel» au format IEEE 754 simple précision,
donnez la valeur de ce nombre.
(ii) Si le mot mémoire d’adresse 0x4000 contient un nombre «réel» au format IEEE 754 double précision,
donnez la valeur de ce nombre.
(iii) Citez au moins 4 autres informations qui peuvent être représentées par le contenu du mot mémoire
d’adresse 0x4000
c) Supposons que le registre $5 contient la valeur 0x4000. Sachant que le processeur MIPS R2000 a des contraintes
d’alignement sur la mémoire, quel est l’effet de chacune des 4 instructions MIPS ci-dessous ?
(i) lw $20, 0($5)
(ii) lw $21, 1($5)
(iii) sw $22, 2($5)
(iv) lb $23, 3($5)
4
Peut-on utiliser la formule Σι = n(n+1)/2 ?
3/3
Téléchargement