0% ont trouvé ce document utile (0 vote)
30 vues2 pages

Solution Examen Architecture

Transféré par

Yahya El Gueddari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues2 pages

Solution Examen Architecture

Transféré par

Yahya El Gueddari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Examen d’architecture des ordinateurs

Solution

1-A Il faut commencer par lire l’opérande 2 en mémoire et le mettre dans un regaistre, car les
opérations arithmétiques ne peuvent être réalisées qu’entre 2 registres : r12 <- [%rad2]

1-B l’opération précédente sera réalisée à l’entrée d’un état supplémentaire que l’on nommera par
exemple load_op2. Le tableau suivant est une représentation de la partie du graphe demandée :

Transition Decode  load_op2 Load_op2  pcplus1


condition /ir[31]*ir[15] 1
action R12  [rad2] Rdest  Rs1 op R12

1-C

Areg Breg Dreg Ualcmd Dbusin write


Decode  load_op2 Ir[19..16] 0000 1100 0000 10 0
Load_op2  pcplus1 Ir[23..20] 1100 Ir[27..24] Ir[31..28] 01 0

2- Nombre d’occurrences d’un entier dans un tableau


PILE = 0x100
M = 10
set PILE, %sp
set tab, %r1
set M, %r2
set 2, %r3
call nb_occurrences
stop: ba stop
tab: .word 3, 2, 7, 5, 2, 11, 6, 9, 4, 2

// nombre d'occurrences d'un élément x dans un tableau


// IN : r1 = adresse du tableau
// IN : r2 = nombre d'éléments
// IN : r3 = valeur x
// OUT : r4 = nombre d'occurrences trouvées
nb_occurrences:
push %r5
push %r6
clr %r4
clr %r5 // index
loop: cmp %r5, %r2
bgeu end_loop
ld [%r1+%r5], %r6
cmp %r6, %r3
bne suite
inc %r4
suite: inc %r5
ba loop
end_loop:
pop %r6
pop %r5
ret

3- Affichage dynamique de la valeur d’un compteur

NB_CYCLES = 6
PILE = 0x100
LEDS = 0xB0000000

ba progp
handler: push %r20
// compeur dans r19
set LEDS, %r20
st %r19, [%r20]
pop %r20
reti

progp: set PILE, %sp


clr %r19
boucle: cmp %r19, NB_CYCLES-1
bne incrementer
clr %r19
ba boucle
incrementer: inc %r19
ba boucle

Vous aimerez peut-être aussi