Vous êtes sur la page 1sur 3

Devoir surveillé Examen Session : Principale Contrôle

Niveau d’Etude :1 ING Semestre : 2


Matière : Architectures avancées des processeurs Date : 10/03/2020 Heure : 8h30
Nombre de pages : 3 Durée : 1h30
Enseignants responsables : H. Ben Fradj Documents : non autorisés
et Z. Ben Azouz

N.B :
• Calculatrices non autorisées (vous n’en avez pas besoin)
• Les réponses non justifiées ne seront pas prises en compte

On propose d’étudier un processeur implémentant un sous ensemble du jeu d’instructions


MIPS. Il contient 32 registres de 32 bits. Le registre R0 est câblé à 0. Toutes les instructions
sont codées sur 32 bits selon l’un des formats suivants :

Format \bits 31 - 26 25 - 21 20 – 16 15 – 11 10 - 6 5-0


RR op rs rt rd sa func
RI op rs rt imm16
J op imm26

On propose d’étudier l’exécution de la séquence d’instructions donnée par la figure 1. Le


processeur utilise une mémoire centrale qui est adressable par octet et de type Gros boutiste.
La première instruction de cette séquence est sauvegardée à l’adresse 0x04000000.

add $5, $0, $0


and $4, $5, $0
ori $8, $0, 0x000C
lw $10, 0x0B10($0)
label1 lw $7, 0x0B00($8)
and $2, $7, $10
beq $2, $0, label2
sub $7, $0, $7
sw $7, 0x0B00($8)
addi $4, $4, 1
label2 subi $8, $8, 4
bne $8, $0, label1
sw $4, 0x0B00 ($0)
Figure 1 : séquence d’instructions MIPS

1
1. En utilisant le tableau 1, déterminer en hexadécimal, le contenu de la mémoire
centrale à partir de l’adresse 0x04000014 jusqu’à l’adresse 0x04000027. (9 points)

Tableau 1: Un sous ensemble d’instructions MIPS

Instruction Opération Code op func

add rd, rs, rt rd ← rs+rt 0x00 0x20


sub rd, rs, rt rd← rs – rt 0x00 0x22
and rd, rs, rt rd← rs and rt 0x00 0x24
or rd, rs, rt rd← rs or rt 0x00 0x25
xor rd, rs, rt rd← rs xor rt 0x00 0x26
slt rd, rs, rt Si rs < rt alors 0x00 0x2A
rd =1 sinon rd = 0
srlv rd, rt, rs rd= rt >> rs 0x00 0x06
srl rd, rt, sa rd= rt >> sa 0x00 0x02
sll rd, rt, sa rd= rt << sa 0x00 0x00
addi rt, rs, imm16 rt ← rs + Sign 0x08 non défini
extend(Imm)
16
andi rt, rs, imm rt← rs and Zero 0x0C non défini
extend(Imm)
16
ori rt, rs, imm rt← rs or Zero 0x0D non défini
extend(Imm)
16
xori rt, imm rt← rs xor Zero 0x0E non défini
extend(Imm)
16
lw rt, imm (rs) load word 0x23 non défini
sw rt, imm16(rs) store word 0x2B non défini
beq rs, rt, imm16 branch if rs = rt 0x04 non défini
bne rs, rt, imm16 branch if rs ≠ rt 0x05 non défini
J imm26 Jump 0x02 non défini

2. Le tableau 2 représente le contenu d’une partie de la mémoire centrale avant


l’exécution des instructions de la figure 1. Déterminer le contenu de cette partie de
la mémoire (en hexadécimal) après l’exécution. Justifier bien vos réponses, en
fournissant le résultat de l’exécution de chaque instruction. Déduire l’objectif de
cette séquence d’instructions. (6 points)

2
Tableau 2 : contenu de la mémoire de l’adresse 0xFB04 jusqu’à l’adresse 0xFB13

@mémoire (hexa) Contenu (hexa) @mémoire(hexa) Contenu (hexa)


00000B00 E0 00000B0A A8
00000B01 FD 00000B0B 3D
00000B02 3C 00000B0C A0
00000B03 1E 00000B0D FF
00000B04 F0 00000B0E F8
00000B05 FF 00000B0F 00
00000B06 E7 00000B10 80
00000B07 0E 00000B11 00
00000B08 7F 00000B12 00
00000B09 56 00000B13 00

3. Ecrire un programme en langage assembleur MIPS qui permet de calculer la


somme des mots positifs sauvegardés entre la case mémoire d’adresse
0x00000BF4 et la case mémoire d’adresse 0x00000C03. La somme est
sauvegardée à l’adresse 0x00000C04. (5 pts)

Vous aimerez peut-être aussi