Quelqu'un qui sait programmer en MIPS/Assembleur ?

Pandava
2021-04-18 10:24:53

J'aurais besoin d'aide.

Tikim
2021-04-18 10:27:54

L'assembleur est différent pour chaque architecture cpu, donc faut voir lequel.

victimejvc3
2021-04-18 10:28:26

Le 18 avril 2021 à 10:27:54 :
L'assembleur est différent pour chaque architecture cpu, donc faut voir lequel.

MIPS khey c'est marqué dans le titre

Tikim
2021-04-18 10:28:32

Mmmh du coup l'architecture c'est MIPS ce qui me dit rien, désolé khey

Pandava
2021-04-18 10:29:45

Le 18 avril 2021 à 10:28:32 :
Mmmh du coup l'architecture c'est MIPS ce qui me dit rien, désolé khey

Pas grave, merci quand même !

JaiLuLesCGU
2021-04-18 10:30:14

non désolé pourqoui ?

hedyLamarr
2021-04-18 10:30:17

YES j’ai fait du MIPS c’est quoi ta question ?

Pandava
2021-04-18 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.

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 :hap:

JaiLuLesCGU
2021-04-18 10:35:08

tu peux compiler ton programme en assembleur avec
gcc -S -mips32 ça devrait marcher

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. :hap:

Par ailleurs tu n’as rien pour émuler le MIPS?

J'ai Mars mais ça fonctionne très mal chez moi. :-(

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.