diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-19 23:11:41 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-19 23:11:41 +0200 |
| commit | b47e5b1518d7089a2f6fdba439cf35dcf29e6089 (patch) | |
| tree | bcfa88dffcff71d6a0959d2db7951cc4105f2a42 /semestre 3/architecture des ordinateurs/td/25-10-15.md | |
| parent | 4ed8060318b1807638c12b8b43660bb98fc99fba (diff) | |
Cours du 13 au 17 octobre
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td/25-10-15.md')
| -rw-r--r-- | semestre 3/architecture des ordinateurs/td/25-10-15.md | 125 |
1 files changed, 125 insertions, 0 deletions
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 |
