--- 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 ```