Révision
Sommaire
Pile et récursivité
Considérez
- que
fib
est la routine Fibonacci récursive implémentée en classe source - que
sp
est initialisé à0x7FFFEFFC
Exercice 1
li s0, 42
li s1, -1
li a0, 3
jal fib
ebreak
- Quelle est la valeur du registre
sp
au moment duebreak
? - Combien de fois la première instruction de la routine
fib
est exécutée ? - Au moment du
ebreak
, quel est le contenu des 48 octets en mémoire à partir de l’adresse0x7FFFEFCC
?
Exercice 2
li a0, 10
jal fib
ebreak
- Quelle est la valeur du registre
sp
au moment duebreak
? - Quelle est la valeur minimale prise par
sp
lors l’exécution (récursive) defib
? - Combien de fois la première instruction de la routine
fib
est exécutée en tout (extra) ?
Adressage dans les structures
Soit le programme suivant:
.data
# Structure d'un étudiant
.eqv eCode, 0 # (12) Un code de permanent de 4 lettres et 8 chiffres (ASCII)
.eqv eNote, 12 # (word) dix-milièmes de la note de l'étudiant (donc 10000 pour 100%)
.eqv eNext, 16 # (dword) L'étudiant suivant dans la liste chainée
# Des étudiants enchainées
alice: .ascii "AWON12345678" # alice: 0x10010000
.word 8192
.dword bob
bob: .ascii "BSPO87654321"
.word 5120
.dword eve
eve: .ascii "EVIL66666666"
.word 0x666
.dword james
james: .ascii "JBON00000007"
.word 007
.dword 0
.text
la s0, bob
lw s1, eNote(s0)
lb s2, 5(s0)
ld t0, eNext(s0)
ld t1, eNext(t0)
lw s3, eNote(t1)
ld s4, -16(s0)
li a7, 10 # Exit
ecall
Questions
- Quelles sont les valeurs (en hexadécimal) des registres (64 bits)
s0
,s1
,s2
,s3
,s4
?
Allocation adressage dans le tas
Soit le code suivant pour RARS RISC-V (64 bits)
.eqv Sbrk, 9
li a7, Sbrk
li a0, 16
ecall
mv s0, a0
li a7, Sbrk
li a0, 1
ecall
mv s1, a0
li a7, Sbrk
li a0, 32
ecall
mv s2, a0
li a0, 'A'
sb a0, 0(s1)
li a0, 'B'
sb a0, 4(s1)
li a0, 'C'
sb a0, 8(s1)
ld s3, 0(s2)
ebreak
On suppose que
- Le tas est initialisé à
0x10040000
Sbrk
aligne sur 8 octets
Questions
- Quelles sont les valeurs (en hexadécimal) des registres (64 bits)
s0
,s1
,s2
,s3
?
Flottants
Soit le codage « huitième-de-précision » binary4 des flottants conforme avec IEEE 754, avec les caractéristiques suivantes:
- 4 bits en tout (c’est VRAIMENT pas beaucoup)
- 1 bit de signe
- 2 bits d’exposants (pole = 1)
- et 1 bit de mantisse
Questions
- Quels sont tous les nombres décimaux représentables ?
- En utilisant la règle d’arrondi au plus proche et au pair en cas d’équidistance (le défaut), quelle sont les codage binary4 des nombres suivants: -0.667, 7/4, 2.5, pi, -4,
0x3p-1