diff options
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td')
| -rw-r--r-- | semestre 3/architecture des ordinateurs/td/25-11-19.md | 185 |
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 |
