Académique Documents
Professionnel Documents
Culture Documents
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
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
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)
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 :
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
5
Questions
1. Calculer le nombre total N d'instructions distinctes,