suite de Fibonacci [NASM] - ASM - Programmation
Marsh Posté le 04-04-2006 à 14:52:33
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.
Marsh Posté le 04-04-2006 à 18:04:45
et j'ai oublié :
ligne 10, c'est pas jg qu'il faut mettre, mais jge
Marsh Posté le 04-04-2006 à 19:11:59
merci je vais essayer de corriger
je vois pas comment faire pour corriger le "mov ecx, [eax] "
Marsh Posté le 04-04-2006 à 19:45:31
euh... les modes d'adressage, ça te dit quelque chose ?
Marsh Posté le 04-04-2006 à 19:47:39
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
Marsh Posté le 04-04-2006 à 19:53:09
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 ?
Marsh Posté le 04-04-2006 à 20:01:58
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...
Marsh Posté le 05-04-2006 à 12:27:12
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.
Marsh Posté le 05-04-2006 à 13:00:22
je plussoie
Marsh Posté le 05-04-2006 à 13:44:20
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 ....
Marsh Posté le 06-04-2006 à 13:00:04
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.
Marsh Posté le 04-04-2006 à 14:25:44
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
princ.cpp
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