Pandava
2021-04-18 10:32:37
Code C (Fibonacci itératif) :
1 # include < stdio .h >
2
3 int fibonacci ( int n) {
4 if ( n <1 ) return 0 ;
5 int f0 = 0 ;
6 int f1 = 1 ;
7 for (int i = 1; i<n; i++) {
8 int f2 = f0 + f1 ;
9 f0 = f1 ;
10 f1 = f2 ;
11 }
12 return f1 ;
13 }
14
15 int main () {
16 int n;
17 printf (" Entrez un entier : ");
18 scanf ("%d", &n);
19 printf ("%d\n", fibonacci (n));
20 return 0;
21 }
Je dois traduire ce code en Assembleur/MIPS.
Est-ce que cette solution marche ?
https://gist.github.com/abdelq/db58868706ae15407015973227ca5f3a
Parce que normalement, mon main en Assembleur doit avoir cette tronche (équivalent au main de mon code C), donc il doit y avoir des modifications à faire :
5 main : la $a0 , demande
6 li $v0 , 4 # printf (" Entrez un entier : ") ;
7 syscall
8 li $v0 , 5 # scanf ("% d", &n) ;
9 syscall
10 move $a0 , $v0 # Place le paramètre n dans $a0
11 jal fib # Appel de la fonction (le résultat sera dans $v1)
12 move $a0 $v1
13 li $v0 , 1 # printf ("% d", fib (n));
14 syscall
15 la $a0 , retour
16 li $v0 , 4 # printf ("\ n") ;
17 syscall
18 li $v0 , 10 # Fin du programme ( syscall exit )
19 syscall
hedyLamarr
2021-04-18 10:32:59
Le 18 avril 2021 à 10:30:49 :
Le 18 avril 2021 à 10:30:17 :
YES j’ai fait du MIPS c’est quoi ta question ?
Attends, je te la pose proprement.
Pas de soucis , prends ton temps
hedyLamarr
2021-04-18 10:36:00
Le 18 avril 2021 à 10:32:37 :
Code C (Fibonacci itératif) :
1 # include < stdio .h >
2
3 int fibonacci ( int n) {
4 if ( n <1 ) return 0 ;
5 int f0 = 0 ;
6 int f1 = 1 ;
7 for (int i = 1; i<n; i++) {
8 int f2 = f0 + f1 ;
9 f0 = f1 ;
10 f1 = f2 ;
11 }
12 return f1 ;
13 }
14
15 int main () {
16 int n;
17 printf (" Entrez un entier : ");
18 scanf ("%d", &n);
19 printf ("%d\n", fibonacci (n));
20 return 0;
21 }
Je dois traduire ce code en Assembleur/MIPS.
Est-ce que cette solution marche ?
https://gist.github.com/abdelq/db58868706ae15407015973227ca5f3a
Parce que normalement, mon main en Assembleur doit avoir cette tronche (équivalent au main de mon code C), donc il doit y avoir des modifications à faire :
5 main : la $a0 , demande
6 li $v0 , 4 # printf (" Entrez un entier : ") ;
7 syscall
8 li $v0 , 5 # scanf ("% d", &n) ;
9 syscall
10 move $a0 , $v0 # Place le paramètre n dans $a0
11 jal fib # Appel de la fonction (le résultat sera dans $v1)
12 move $a0 $v1
13 li $v0 , 1 # printf ("% d", fib (n));
14 syscall
15 la $a0 , retour
16 li $v0 , 4 # printf ("\ n") ;
17 syscall
18 li $v0 , 10 # Fin du programme ( syscall exit )
19 syscall
Ca dépend tu es sûr que tu as le droit de:
- faire un code optimisé
-utiliser les labels de variables
?
Par ailleurs tu n’as rien pour émuler le MIPS?
Pandava
2021-04-18 10:38:25
faire un code optimisé
Tu entends quoi par là ?
utiliser les labels de variables
Il me semble oui.
Enfin je crois.
Par ailleurs tu n’as rien pour émuler le MIPS?
J'ai Mars mais ça fonctionne très mal chez moi.