Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1022 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  [NASM] suite de Fibonacci

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[NASM] suite de Fibonacci

n°1338728
divxaide
Posté le 04-04-2006 à 14:25:44  profilanswer
 

salut !
je doit faire la suite de fibonacci en asm en recursif (avec nasl pour compiler), mais je n'y arrive pas.
voila ce que j'ai fait :
 
fiboasm.asm

Code :
  1. global fiboasm
  2. section .text
  3. fiboasm:
  4. push ebp
  5. mov ebp, esp
  6. mov ecx, [ebp+8]
  7. deb:
  8. cmp ecx, 2
  9. jg fibo              ;si ecx >=2 on va a fibo
  10. mov eax, 1           ; sinon on retourne 1
  11.         ret
  12. fibo:
  13. dec ecx
  14. call deb           
  15. mov ecx, [eax]         ; on met eax dans ecx
  16. dec ecx
  17. call deb
  18. add eax, ecx
  19. fin:
  20. pop ebp
  21. ret


 
princ.cpp
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. extern "C" int fiboasm(int);
  4. int main() {
  5.   int n;
  6.   cout<<"n=";
  7.   cin>>n;
  8.   cout<<"En ASM fibo("<<n<<" )="<<fiboasm(n)<<endl;
  9.   return 0;
  10. }


 
Je compile avec un makefile ! j'ai tout le temps une ereur de segmentation. j'ai deja rechercher des sources sur le net mais je n'ai pas trouver de programme simple (pour moi)
 
Merci d'avance de votre aide

mood
Publicité
Posté le 04-04-2006 à 14:25:44  profilanswer
 

n°1338771
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-04-2006 à 14:52:33  profilanswer
 

ligne 16 : tu veux mettre eax dans ecx, mais en fait tu met le contenu de la mémoire pointée par eax dans ecx. et vu qu'eax n'est initialisé nulle part, tu dois lire une zone mémoire qui ne t'appartient pas.

n°1339033
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-04-2006 à 18:04:45  profilanswer
 

et j'ai oublié :
ligne 10, c'est pas jg qu'il faut mettre, mais jge


---------------
J'ai un string dans l'array (Paris Hilton)
n°1339074
divxaide
Posté le 04-04-2006 à 19:11:59  profilanswer
 

merci je vais essayer de corriger
 
je vois pas comment faire pour corriger le "mov ecx, [eax] "


Message édité par divxaide le 04-04-2006 à 19:17:19
n°1339095
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-04-2006 à 19:45:31  profilanswer
 

euh... les modes d'adressage, ça te dit quelque chose ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1339098
divxaide
Posté le 04-04-2006 à 19:47:39  profilanswer
 

non :(
c'est pas le fait que avec les [] sa donne l'adresse .?
un pote ma dit de mettre "mov ecx, eax"
 
mais sa regle pas le pb que eax ne contient rien :(

n°1339103
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-04-2006 à 19:53:09  profilanswer
 

ton pote a raison.  
mais si eax ne contient rien, ton programme ne va pas l'inventer ! c'est à toi de l'initialiser en fonction de ton algo
 
edit: on ne vous apprend pas les modes d'adressage à l'école ? :heink:


Message édité par Harkonnen le 04-04-2006 à 19:54:38

---------------
J'ai un string dans l'array (Paris Hilton)
n°1339113
divxaide
Posté le 04-04-2006 à 20:01:58  profilanswer
 

ba si mais c trop rapide et vu que sa me passionne pas trop j'ecoute pas tjs :(
 
j'arrive pas a trouver un algo qui puisse additionner les deux valeurs de n-1 et n-2
je v essayer de continuer a chercher.
Si tu a une idée... ;)

n°1339562
db__
spécialiste de l'à peu près
Posté le 05-04-2006 à 12:27:12  profilanswer
 

Bonjour
En général, lorsqu'on programme en assembleur, c'est pour faire du plus compacte ou plus rapide voir les deux. Une programmation récursive est une véritable catastrophe en temps de calcul et en place utilisée donc à éviter si c'est possible.
Je n'ai pas appris ce qu'est une suite de fibonacci, et l'algo utilisé ne m'a pas permis de voir ce que cela pouvait être.
quel est l'intéret d'enrober le tout dans du C++ ?
La totale en assembleur n'est guère plus compliqué.
Un commentaire par ligne d'assembleur n'est pas du luxe et facilite une relecture rapide. En début de fonction un résumé de l'utilisation des registres peut aider au débogage.
La préservation de l'environnement pour l'appelant peut être un plus
ebp y a droit pourquoi pas ecx ?
à noter que dans ce code l'utilisation de ebp ne s'imposait pas.

n°1339585
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-04-2006 à 13:00:22  profilanswer
 

je plussoie :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 05-04-2006 à 13:00:22  profilanswer
 

n°1339637
maxpower44
Posté le 05-04-2006 à 13:44:20  profilanswer
 

db__ a écrit :

Je n'ai pas appris ce qu'est une suite de fibonacci, et l'algo utilisé ne m'a pas permis de voir ce que cela pouvait être.


suite de fibonacci
 
f0=0
f1=1
f2=f1+f0=1
f3=f2+f1=2
 
regle générale:
fn=f(n-1) + f(n-2) avec n > 2
 
d'ou:
f0=0
f1=1
f2=1
f3=2
f4=3
f5=5
f6=8
etc

db__ a écrit :

Une programmation récursive est une véritable catastrophe en temps de calcul et en place utilisée donc à éviter si c'est possible.

+1
La recusivité est facilement evitable dans ce cas ....


Message édité par maxpower44 le 05-04-2006 à 13:46:46
n°1340498
db__
spécialiste de l'à peu près
Posté le 06-04-2006 à 13:00:04  profilanswer
 

Bonjour
Je vois maintenant ce qu'est cette suite. Merci à Mr maxpower44
La récursivité est évitable.
Il serait peut-être bon que les professeurs demandent des exercices cohérant à leurs élèves. Celà les motiverait peut-être davantage.
Faire la chose en récursif en perl, l'améliorer en C, puis en assembleur et comparer les temps de calcul. Un facteur 1000 entre le perl et l'assembleur ne me parait pas déraisonnable. Avec java on devrait atteindre des records.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  [NASM] suite de Fibonacci

 

Sujets relatifs
Données dans un tableau suite à une requêteVariable à la suite...AIDE
[C# - GDI] Rendre une suite de ligne transparente[C++ débutant] Liste chaînée, suite des problemes :D
suite apres l'écriture manuelle d'un programmesuite d'action dans une fonction
pb de compatibilité IE / Firefox ( suite )Algo suite logique
[resolu] [perl] problème "lib text::template" suite migration serverIncrémenter une date plusieurs fois de suite
Plus de sujets relatifs à : [NASM] suite de Fibonacci


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR