aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/td
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td')
-rw-r--r--semestre 3/architecture des ordinateurs/td/25-10-08.md2
-rw-r--r--semestre 3/architecture des ordinateurs/td/25-10-15.md125
2 files changed, 126 insertions, 1 deletions
diff --git a/semestre 3/architecture des ordinateurs/td/25-10-08.md b/semestre 3/architecture des ordinateurs/td/25-10-08.md
index 45c488e..eb4a9e3 100644
--- a/semestre 3/architecture des ordinateurs/td/25-10-08.md
+++ b/semestre 3/architecture des ordinateurs/td/25-10-08.md
@@ -68,4 +68,4 @@ chaine: .asciiz "toto"
ori $2, $0, 10
syscall
-```
+``` \ No newline at end of file
diff --git a/semestre 3/architecture des ordinateurs/td/25-10-15.md b/semestre 3/architecture des ordinateurs/td/25-10-15.md
new file mode 100644
index 0000000..5046904
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/td/25-10-15.md
@@ -0,0 +1,125 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - architecture-des-ordinateurs
+ - td
+semestre: 3
+---
+```asm
+beq $8, $9, label # va à label si $8 == $9
+bne $8, $9, label # va à label si $8 != $9
+blez $8, label # va à label si $8 <= 0
+bltz $8, label # va à label si $8 < 0
+bgez $8, label # va à label si $8 >= 0
+bgtz $8, label # va à label si $8 > 0
+j label # va à label
+jr r1 # va à l'adresse mémoire dans r1
+```
+
+```asm
+.data
+a: .word -5
+b: .word 3
+.text
+# on commence par le nom de la fonction
+main:
+ lui $8, 0x1001
+ lw $9, 0($8)
+ # if
+ bne $9, $0, else
+ # then
+ lw $9, 0($8) # on recharge à chaque fois qu'on l'utilise
+ lw $10, 4($8)
+ addu $9, $9, $10
+ sw $9, 0($8)
+ j endif
+else:
+ lw $9, 0($8)
+ lw $10, 4($8)
+ subu $9, $9, $10
+ sw $9, 0($8)
+endif:
+ ori $2, $0, 10
+ syscall
+```
+
+```asm
+.data
+p: .word 10 # 0 -> $9
+q: .word 20 # 4 -> $10
+i: .word 0 # 8 -> $11
+s: .word 0 # 12 -> $12
+.text
+main:
+ lui $8, 0x1001
+ # i = p
+ lw $9, 0($8)
+ or $11, $0, $9
+ sw $11, 8($8)
+for:
+ # i <= q
+ lw $10, 4($8)
+ lw $11, 8($9)
+ slt $13, $10, $11
+ bne $13, $0, end_for
+ # s += i
+ lw $12, 12($8)
+ lw $11, 8($8)
+ addu $12, $12, $11
+ sw $12, 12($8)
+ # i++
+ lw $11, 8($8)
+ addiu $11, $11, 1
+ sw $11, 8($8)
+ j for
+end_for:
+ # printf("%d", s)
+ ori $2, $0, 1
+ lw $12, 12($8)
+ or $4, $0, $12
+ syscall
+ # exit()
+ ori $2, $0, 10
+ syscall
+```
+
+```asm
+.data
+max: .word 0
+tab: .word -2, 1, 5, -7, 42, -9, 0
+.text
+main:
+ lui $8, 0x1001
+ ori $12, $0, $8
+ addui $8, $8, 4
+ # max = tab[0]
+ lw $9, 4($8)
+ or $10, $0, $9
+ ori $11, $0, $8
+ sw $10, 0($12)
+while:
+ # tab[i] != 0
+ lw $9, 0($8)
+ beq $9, 0, end_while
+ # if tab[i] > max
+ lw $10, 0($12)
+ lw $9, 0($8)
+ slt $10, $10, $9
+ beq $10, $0, skip
+ # max = tab[i]
+ lw $9, 0($8)
+ lw $10, 0($12)
+ or $10, $0, $9
+ sw $10, 0($12)
+skip:
+ # i++
+ addiu $8, $8, 4
+ j while
+end_while:
+ ori $2, $0, 1
+ lw $4, 0($12)
+ syscall
+ ori $2, $0, 10
+ syscall
+``` \ No newline at end of file