aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/td/25-11-19.md
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-11-21 18:37:48 +0100
committerAnhgelus Morhtuuzh <william@herges.fr>2025-11-21 18:37:48 +0100
commit20fc727d4f954eb2109b71a7686c3107fdfa4bbf (patch)
treea5613db97e67d8968c7d622b605ed530755176bb /semestre 3/architecture des ordinateurs/td/25-11-19.md
parent341fc63ff791e08c7d0a00346080067c9bd1d5dd (diff)
Cours du 3 au 21 novembre
ce qui fait 3 semaines en philo et une semaine en info
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td/25-11-19.md')
-rw-r--r--semestre 3/architecture des ordinateurs/td/25-11-19.md185
1 files changed, 185 insertions, 0 deletions
diff --git a/semestre 3/architecture des ordinateurs/td/25-11-19.md b/semestre 3/architecture des ordinateurs/td/25-11-19.md
new file mode 100644
index 0000000..3153539
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/td/25-11-19.md
@@ -0,0 +1,185 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - architecture-des-ordinateurs
+ - td
+semestre: 3
+---
+Les partiels ne sont pas très bon en général
+|> moyenne de 7.1, il y a eu une très bonne note
+
+---
+
+`$31` est géré par le CPU lors d'un `jal`
+
+```asm
+.data
+nmt: .word 15, -1, 124
+.text
+# main
+ # moyenne3(n, m, 5)
+ lui $8, $0, 0x1001
+ addiu $29, $29, -16 # pour pouvoir sauvegarder tmp si on ne l'optimise pas
+ # n
+ lw $9, 0($8)
+ sw $9, 0($8)
+ or $4, $0, $9
+ # m
+ lw $9, 4($8)
+ sw $9, 4($8)
+ or $5, $0, $9
+ # 9
+ ori $9, $0, 5
+ sw $9, 8($8)
+ or $6, $0, $9
+ jal moyenne3
+ addiu $29, $29, 12
+
+ # affichage
+ or $4, $0, $2
+ ori $2, $0, 1
+ syscall
+
+ # moyenne3(m, 1, m+5)
+ lui $8, $0, 0x1001
+ addiu $29, $29, -12
+ # m
+ lw $9, 4($8)
+ sw $9, 0($8)
+ or $4, $0, $9
+ # m
+ ori $9, $0, 1
+ sw $9, 4($8)
+ or $5, $0, $9
+ # 9
+ lw $9, 4($8)
+ addiu $9, $9, 5
+ sw $9, 8($8)
+ or $6, $0, $9
+ jal moyenne3
+ addiu $29, $29, 12
+
+ # affichage
+ or $4, $0, $2
+ ori $2, $0, 1
+ syscall
+
+ # exit
+ addui $29, $29, 4
+ ori $2, $0, 10
+ syscall
+
+moyenne3:
+ addiu $29, $29, -12 # pour $31, $16 et pour la variable optimisée en registre
+ sw $31, 4($29)
+ sw $16, 8($29)
+ # $4 = p; $5 = q; $6 = r
+ or $16, $0, $0
+ addu $16, $4, $5
+ addu $16, $16, $6
+ ori $9, $0, 3
+ div $16, 3
+ mflo $2
+ lw $31, 4($29)
+ lw $16, 8($29)
+ addiu $29, $29, 8
+ jr $31
+```
+
+```asm
+.data
+nml: .word 15, -1, 124
+.text
+# main
+ # moyenne3(n, m, 5)
+ lui $8, $0, 0x1001
+ addiu $29, $29, -16 # pour pouvoir sauvegarder tmp si on ne l'optimise pas
+ # n
+ lw $9, 0($8)
+ sw $9, 0($20)
+ or $4, $0, $9
+ # m
+ lw $9, 4($8)
+ sw $9, 4($20)
+ or $5, $0, $9
+ # 9
+ ori $9, $0, 5
+ sw $9, 8($20)
+ or $6, $0, $9
+ jal moyenne3
+ addiu $29, $29, 12
+
+ # affichage
+ or $4, $0, $2
+ ori $2, $0, 1
+ syscall
+
+ # moyenne5(m, 1, m+5, 12, 35)
+ lui $8, $0, 0x1001
+ addiu $29, $29, -20
+ # m
+ lw $9, 4($8)
+ sw $9, 0($29)
+ or $4, $0, $9
+ # 1
+ ori $9, $0, 1
+ sw $9, 4($29)
+ or $5, $0, $9
+ # m+5
+ lw $9, 4($8)
+ addiu $9, $9, 5
+ sw $9, 8($29)
+ or $6, $0, $9
+ # 12
+ ori $9, $0, 12
+ sw $9, 12($29)
+ or $7, $0, $9
+ # 35
+ ori $9, $0, 35
+ sw $9, 16($29)
+ # on ne peut pas mettre $9 dans $8 car $8 ne contient pas un paramètre de fonction
+ jal moyenne5
+ addiu $29, $29, 20
+
+ # affichage
+ or $4, $0, $2
+ ori $2, $0, 1
+ syscall
+
+ # exit
+ addui $29, $29, 4
+ ori $2, $0, 10
+ syscall
+
+moyenne3:
+ addiu $29, $29, -12 # pour $31, $16 et pour la variable optimisée en registre
+ sw $31, 4($29)
+ sw $16, 8($29)
+ # $4 = p; $5 = q; $6 = r
+ or $16, $0, $0
+ addu $16, $4, $5
+ addu $16, $16, $6
+ ori $9, $0, 3
+ div $16, 3
+ mflo $2
+ lw $31, 4($29)
+ lw $16, 8($29)
+ addiu $29, $29, 8
+ jr $31
+
+moyenne5:
+ addiu $29, $29, -12 # pour $31, $16 et pour la variable optimisée en registre
+ sw $31, 4($29)
+ sw $16, 8($29)
+ lw $10, 28($29)
+ addu $16, $4, $5
+ addu $16, $16, $6
+ addu $16, $16, $7
+ addu $16, $16, $10
+ ori $9, $0, 5
+ div $16, 5
+ lw $31, 4($29)
+ lw $16, 8($29)
+ jr $31
+``` \ No newline at end of file