Vous êtes sur la page 1sur 5

Université ELMANAR Architecture Zouhour Ben Azouz

Hanane Ben Fraj


Inst itut Supérieur
Avancée A.U. 2010/2011
d’Informatique

TD 1 : Jeux d’instructions

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 câblé à 0 (R0=0). On peut lire son contenu, mais
l’écriture dans R0 ne produit aucun résultat. R31 contient l’adresse de retour des
procédures. Les instructions sont de longueur fixe (32 bits). Le jeu d’instructions est
donné dans la table 1. La mémoire 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 R5R6

Les syntaxes assembleur sont les suivantes:


Instructions registres-registre :
Code op, registre destination, registre source 1, registre source 2
Instructions registres-immédiat :
Code op, registre destination, registre source 1, immédiat
Instructions mémoire :
Code op, registre donnée, déplacement (registre adresse)
Instructions branchement :
Code op, registre, déplacement
Instructions de saut :
Code op, déplacement ou Code op, registre.

1. Quelles est la nature de ce processeur RISC ou CISC, justifier votre réponse.


2. Combien de bits sont réservés au code op dans le format RI.
3. Comment peut-on exécuter avec uniquement le jeu d’instruction 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, interprété en signé

1
c) Multiplier par 18 le contenu du registre R5

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 Signification de l'instruction


et code-op

Transferts de Transfère les données entre des registres et la mémoire ; le seul


données (depuis ou mode d'adressage mémoire est (registre + déplacement signé de 16
vers la mémoire) bits)

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)
Arithmétique et Opérations sur les données entières ou logiques dans des registres
logique entiers;
ADD, ADDI, Addition, addition immédiats (tous les immédiats ont 16 bits). Les
ADDU, ADDUI opérandes sont signés pour ADD et ADDI (avec extension de signe de
l’immédiat). Les opérandes sont non signés pour ADDU et ADDUI
(avec extension de 0 pour l’immédiat)

SUB, SUBU Soustraction signée, non signee


AND, ANDI Et, et immédiat (extension de 0 pour l’immédiat)
OR, ORI, XOR, Ou, ou immédiat, ou exclusif, ou exclusif immédiat (extension de 0 pour
XORI l’immédiat)
LHI Chargement haut immédiat (charge la partie haute d'un registre avec un
immédiat) et met à zéro la partie basse
SLL, SRL, SRA, Décalages : sous forme immédiate (S__I) ou variable (S__); les
SLLI, SRLI, décalages sont logique à gauche, logique à droite, et arithmétique
SRAI
S__, S__I Positionner la condition : "__" peut être EQ, NE, LT, GT, LE,
GE
Contrôle Branchements conditionnels et sauts; relatifs CP ou par registre
BEQZ, BNEZ Branchement si registre entier égal/non égal à zéro; déplacement relatif
de 16 bits ajouté à CP
J, JR Sauts : déplacement de 26 bits ajouté à CP (J ) ou destination dans le
registre (J R )

2
Exercice2 : Exemples MIPS et ARM pour les instructions arithmétiques
Multiplication par des constantes
L’instruction de multiplication sur des entiers prend plus d’une dizaine de cycles
d’horloge sur la plupart des processeurs. Les instructions logiques, l’addition et la
soustraction prennent généralement un seul cycle d’horloge. Il est donc plus efficace
d’implanter la multiplication du contenu d’un registre par une constante en utilisant des
opérations comme l’addition, la soustraction et les décalages. En utilisant les instructions
ci-dessous pour le MIPS et pour l’ARM, donner la suite d’instructions MIPS et la suite
d’instructions 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 arithmétiques et logiques :

I=1 si l’opérande 2 est une valeur immédiate


0 sinon.

3
n : numéro du registre opérande 1

 d : numéro du registre destination


 operand2 : second opérande. Trois formats sont possibles :
o opérande registre, décalage éventuel spécifié par une constante :

11 10 9 8 7 6 5 4 3 2 1 0
#shift Sh 0 Rm

#shift : nombre de positions de décalage


Sh : type de décalage (00 = LSL, 01 = LSR, 10 = ASR, 11 = ROR)
Rm : numéro du registre
o opérande registre, décalage éventuel spécifié par un registre :

11 10 9 8 7 6 5 4 3 2 1 0
Rs 0 Sh 1 Rm

Rs : numéro du registre contenant le nombre de positions de


décalage
 Sh : type de décalage (00 = LSL, 01 = LSR, 10 = ASR, 11 = ROR)
 Rm : numéro du registre
o opérande immédiat (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 =

4
Exercice 3 : On considère une architecture comportant 16 registres 16 bits. Le jeu
d'instructions est le suivant :

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 vérifier qu'il est compatible avec un codage
sur 16 bits. Proposer un codage 16 bits pour le jeu d’instructions modifié.

Vous aimerez peut-être aussi