You are on page 1of 6

1

Universit ELMANAR Architecture Zouhour Ben Azouz


Hanane Ben Fraj
Institut Suprieur Avance A.U. 2010/2011
dInformatique

TD 1 : Jeux dinstructions

Exercice 1

Soit le processeur DLX. Tous les registres ont 32 bits. Le processeur a 32 registres
entiers, de R0 R31. Le registre R0 est cbl 0 (R0=0). On peut lire son contenu, mais
lcriture dans R0 ne produit aucun rsultat. R31 contient ladresse de retour des
procdures. Les instructions sont de longueur fixe (32 bits). Le jeu dinstructions est
donn dans la table 1. La mmoire est adressable par octets.
NB : Les instructions de comparaison S__ positionnent le registre destination 1 si la
condition est vraie, et 0 si la condition est fausse.
Ex : SNE R4, R5, R6 met R4 1 si R5R6

Les syntaxes assembleur sont les suivantes:


Instructions registres-registre :
Code op, registre destination, registre source 1, registre source 2
Instructions registres-immdiat :
Code op, registre destination, registre source 1, immdiat
Instructions mmoire :
Code op, registre donne, dplacement (registre adresse)
Instructions branchement :
Code op, registre, dplacement
Instructions de saut :
Code op, dplacement ou Code op, registre.

1. Quelles est la nature de ce processeur RISC ou CISC, justifier votre rponse.


2. Combien de bits sont rservs au code op dans le format RI.
3. Comment peut-on excuter avec uniquement le jeu dinstruction DLX donn par la
table 1 les actions suivantes :

a) Mettre F000A000H dans le registre R3

b) Diviser par 2 le contenu du registre R4, interprt en sign

c) Multiplier par 18 le contenu du registre R5

2
d) Mettre dans R2 la valeur absolu de R2
cad R2 R2 si R2 >0
R2 -R2 si R2 <0
Indication : il faut tester le bit de signe de R2

Table 1 : Jeu d'instructions DLX

Type d'instruction et Signification de l'instruction


code-op

Transferts de Transfre les donnes entre des registres et la mmoire ; le seul mode
donnes (depuis ou d'adressage mmoire est (registre + dplacement sign de 16 bits)
vers la mmoire)
LB,LBU,SB Chargement octet, octet non sign, rangement octet
LH,LHU,SH Chargement demi-mot, demi-mot non sign, rangement demi-mot
LW,SW Chargement mot, rangement mot (de/vers des registres entiers)
Arithmtique et Oprations sur les donnes entires ou logiques dans des registres
logique entiers;
ADD,ADDI, Addition, addition immdiats (tous les immdiats ont 16 bits). Les
ADDU,ADDUI oprandes sont signs pour ADD et ADDI (avec extension de signe de
limmdiat). Les oprandes sont non signs pour ADDU et ADDUI (avec
extension de 0 pour limmdiat)

SUB,SUBU Soustraction signe, non signee


AND,ANDI Et, et immdiat (extension de 0 pour limmdiat)
OR,ORI,XOR, Ou, ou immdiat, ou exclusif, ou exclusif immdiat (extension de 0 pour
XORI limmdiat)
LHI Chargement haut immdiat (charge la partie haute d'un registre avec un
immdiat) et met zro la partie basse
SLL,SRL,SRA, Dcalages : sous forme immdiate (S__I) ou variable (S__); les
SLLI,SRLI, dcalages sont logique gauche, logique droite, et arithmtique
SRAI
S__,S__I Positionner la condition : "__" peut tre EQ,NE,LT,GT,LE,
GE
Contrle Branchements conditionnels et sauts; relatifs CP ou par registre
BEQZ,BNEZ Branchement si registre entier gal/non gal zro; dplacement relatif
de 16 bits ajout CP
J,JR Sauts : dplacement de 26 bits ajout CP (J) ou destination dans le
registre (JR)

3
Exercice2 : Exemples MIPS et ARM pour les instructions arithmtiques
Multiplication par des constantes
Linstruction de multiplication sur des entiers prend plus dune dizaine de cycles
dhorloge sur la plupart des processeurs. Les instructions logiques, laddition et la
soustraction prennent gnralement un seul cycle dhorloge. Il est donc plus efficace
dimplanter la multiplication du contenu dun registre par une constante en utilisant des
oprations comme laddition, la soustraction et les dcalages. En utilisant les instructions
ci-dessous pour le MIPS et pour lARM, donner la suite dinstructions MIPS et la suite
dinstructions ARM pour effectuer la multiplication du contenu du registre R1 par les
constantes : 33,31et 37.
Instructions MIPS

o IMM16 est une constante sur 16 bits et SIMM16 est la constante 32 bits obtenue par
extension de signe.

ARM
Format des instructions arithmtiques et logiques :

I=1 si loprande 2 est une valeur immdiate


0 sinon.
n : numro du registre oprande 1
d : numro du registre destination

4
operand2 : second oprande. Trois formats sont possibles :
o oprande registre, dcalage ventuel spcifi par une constante :
11 10 9 8 7 6 5 4 3 2 1 0
#shift Sh 0 Rm
#shift : nombre de positions de dcalage
Sh : type de dcalage (00 = LSL, 01 = LSR, 10 = ASR, 11 = ROR)
Rm : numro du registre
o oprande registre, dcalage ventuel spcifi par un registre :
11 10 9 8 7 6 5 4 3 2 1 0
Rs 0 Sh 1 Rm
Rs : numro du registre contenant le nombre de positions de
dcalage
Sh : type de dcalage (00 = LSL, 01 = LSR, 10 = ASR, 11 = ROR)
Rm : numro du registre
o oprande immdiat (de la forme valeur_8_bits * 2^2k) :
11 10 9 8 7 6 5 4 3 2 1 0
K value
value : valeur sur 8 bits

Exemple ADD R2, R1, R0 LSL #4 signifie R2 =R1 + (R0 <<4) = R1 + 16*R0

Exercice 3 : On considre une architecture comportant 16 registres 16 bits. Le jeu


d'instructions est le suivant :

5
Questions
1. Calculer le nombre total N d'instructions distinctes,

2. Si on utilise un format d'instruction de longueur constante, quelle est la longueur


minimum d'une instruction ?

3. Un format d'instruction de longueur variable permet-il d'obtenir une longueur moyenne


d'instruction plus petite qu'un format de longueur constante?

4. Proposer une modification minimale du jeu d'instruction qui permet un codage de


longueur constante sur 16 bits (il existe plusieurs solutions acceptables). Calculer le
nombre total N0 d'instructions distinctes et vrifier qu'il est compatible avec un codage
sur 16 bits. Proposer un codage 16 bits pour le jeu dinstructions modifi.

You might also like