Vous êtes sur la page 1sur 6

Exercice : BIG- AND LITTLE-ENDIAN MEMORY

1.

The

2. Supposons qu’un mot binaire de 32 bits (0xFF223344) est stocké dans la 100ème case
mémoire (memory word N°100) à partir l’adresse : 00400010.
(a) quelles sont les adresses (en Hexa) correspondantes aux cases N°0, N°1, N°99 et N°100.
Donnez ces adresses sur le schéma.
(b) Sur la figure, écrivez le nombre 0xFF223344 dans la case N° 100 selon les deux modes,
little-endian (sur le tableau à droit de la figure) et big-endian (sur le tableau de gauche).
Indiquez (sur les flèches issus de la case 100) l’adresse (en Hexa) de chaque octet du la
valeur stockée dans la case N°100.

FF 22 33 44 FF 22 33 44
Case N°99 Case N°99

Case N°1 Case N°1

Case N°0 00400010 Case N°0


004001A0 1A3 1A3 004001A0
1A1 1A2 1A2 1A1
Adresses

FF 22 33 44 0040 01A0 FF 22 33 44
0040 019C
Case N°99 Case N°99

Case N°1 00400014 Case N°1

Case N°0 00400010 Case N°0

Exercice : Programmation assembleur – Processeur MIPS

1. Soit le programme suivant, en code assembleur MIPS


addi $s0, $0, 0x4f3c
sll $t0, $s0, 16
addi $s1, $0, 0x39 (57 en décimal)
or $s0, $t0, $s1
add $s1, $s1, $t0
sub $t0, $S0, $S1

- Complétez le code machine correspondant :

addi $s0, $0, 0x4f3c 20104F3C


sll $t0, $s0, 16 00104400
addi $s1, $0, 0x39 20110039
or $s0, $t0, $s1 01118025
add $s1, $s1, $t0 02288820
sub $t0, $S0, $S1 02114022

- Soit à stocker les instructions du programme considéré, en mémoire à partir de


l’adresse en Hexa : 00400000. Complétez les instructions machine et placez-les dans
la mémoire en donnant l’adresse de chaque instruction.

Programme assembleur Adresse Code machine (en hexa)

addi $s0, $0, 0x4f3c


00400014 02114022
sll $t0, $s0, 16
00400010 02288820
addi $s1, $0, 0x39
0040000C 01118025
or $s0, $t0, $s1 00400008 20110039

add $s1, $s1, $t0 00400004 00104400


Mémoire Centrale

2. Après exécution de ce programme, quel sera le contenu (en hexa) des registres S0, S1, T0
S0 =4F3C0039
S1 =4F3C0039
T0 = 00000000
- Lancez l'exécution pas à pas en complétant le tableau suivant :

Instructions Contenu des registres après exécution de


l’instruction
S0 = 00004F3C
addi $s0, $0, 0x4f3c S1 =00000000
T0 = 00000000
S0 = 00004F3C
sll $t0, $s0, 16 S1 =00000000
T0 =4F3C0000
S0 = 00004F3C
addi $s1, $0, 57
S1 = 00000039
0x39
T0 =4F3C0000
S0 =4F3C0039
or $s0, $t0, $s1 S1 = 00000039
T0 =4F3C0000
S0 =4F3C0039
add $s1, $s1, $t0 S1 = 4F3C0039
T0 =4F3C0000
S0 =4F3C0039
sub $t0, $s0, $s1 S1 =4F3C0039
T0 = 00000000
3. Traduisez le programme suivant du code machine au code assembleur MIPS. Les nombres
de gauche représentent les adresses des instructions dans la mémoire et les nombre de droite
correspondent aux instructions du programme (en Hexa).

0x00400000 0x20080000 .......................................................................................................


0x00400004 0x20090001 .......................................................................................................
0x00400008 0x0089502a .......................................................................................................
0x0040000c 0x15400003 .......................................................................................................
0x00400010 0x01094020 .......................................................................................................
0x00400014 0x21290002 .......................................................................................................

Annexe
MIPS register Set

MIPS instructions
R-type instructions (add, sub, and, or, slt): rd <-- rs funct rt

RI-type instructions (addiu): rt <-- rs funct (Immidiat 16)


Load: rt <-- Mem[rs + I16] Store: Mem[rs + I16] <-- rt

Branch equal: PC <-- (rs == rt) ? PC + 4 + I16 <<2 : PC + 4

J instruction (J, Jal) : PC <-- PC31-28 IR25-0 00


2 I26

Code opération et code fonction de quelques instructions :


Instruction Code opération Code fonction

Addi (RI type) 001000 (8) X


Sll (R type) 000000 (0) 000000 (0)
Or (R type) 000000 (0) 100101 (37)
Add (R type) 000000 (0) 100000 (32)
Sub (R type) 000000 (0) 100010 (34)
slt(R type) 000000 (0) 101010 (42)
beq 000100 (4) x
bne 000101 (5) x
J 000010 (2) x
Jal 000011 (3) X
SW 101011 (43) X
LW 100011 (35) x
Jr 000000 (0) 001000 (8)

Vous aimerez peut-être aussi