begin process at 2008 09 05 19:05:56
1 237 437 membres
377 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AUTOMATE CELLULAIRE EN ASSEMBLEUR ( JEU DE LA VIE )


Information sur la source

Catégorie :Jeux Classé sous : automate, cellulaire, jeu, vie, comparatif Niveau : Débutant Date de création : 19/06/2008 Date de mise à jour : 19/06/2008 18:39:53 Vu / téléchargé: 2 287 / 81

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Le but de ce source est de faire un comparatif de vitesse d'exécution entre le VB et l'assembleur.

Tout d'abord, ce source a été compilé à l'aide de FASM, que je vous invite tous à télécharger car c'est le meilleur compilateur que je connaisse, de plus il est gratuit.
http://flatassembler.net/

Ce source est un automate cellulaire qui reproduit le mouvement de cellules ( voir définition de wikipedia : http://fr.wikipedia.org/wiki/Jeu_de_la_vie )

En ce qui concerne la vitesse d'exécution, j'obtiens plus de 2000 images par seconde en ASM avec une grille de 100*100 tandis qu'en VB je stagne à 6 images par seconde...
Bien que mes programmes ne soit pas forcement optimisé a 100% on obtient quand même une différence de 33 000%...
Bon évidemment le programme en VB je l'ai codé en 2 heures alors que celui en assembleur j'ai mis au moins une 15aine d'heure car niveau calcul avec les division euclidiennes ça a été assez difficile ( si quelqun a un tuto sur l'utilisation des fpu, je suis preneur :) ) donc on pourrai s'interroger sur la rentabilité niveau vitesse d'exécution/vitesse d'écriture du code.

Pour ceux qui s'intéressent au fonctionnement du programme vu que la compréhension du code en assembleur est difficile je vais expliquer un peu.

2 variables sont utilisés pour stoker les adresses des tableaux qui contiendront la grille des cellules :
Cases dd addrtbl1
Cases2 dd addrtbl2

La variable Cases indique l'adresse du tableau en cours d'utilisation, la fonction de calcul marche de la manière suivante :
on lit dans Cases[]
on regarde combien de cases sont activent autour, puis on en déduit si une case doit être active, ou non au quel cas on l'écris dans Cases2[]
une fois que toutes les cases ont étés calculées, on inverse les 2 pointeurs c'est a dire Cases devient Cases2 et vice versa

Au niveau de la conversion Str-Hexa et Hexa-Str, n'ayant pas trouvé de fonction déjà faites, je les ait donc refaites en asm, mais si vous avez une petite api sous la main qui le fait, ça m'arrangerai.

Et si quelqun aurait des conseils sur une quelconque manière d'optimiser mon programme, je suis preneur.

Source

  • J'ajoute le lien vers le code en VB : http://www.vbfrance.com/codes/AUTOMATE-CELLULAIRE-JEU-VIE_47062.aspx
J'ajoute le lien vers le code en VB : http://www.vbfrance.com/codes/AUTOMATE-CELLULAIRE-JEU-VIE_47062.aspx

Conclusion

J'aime ces deux langages pour leur particularités :
le VB pour sa rapidité d'écriture du code et l'assembleur pour sa rapidité d'exécution, je ne dirais donc pas qu'un langage est mieux qu'un autre mais qu'il faut savoir choisir l'un ou l'autre à bon escient.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

19 juin 2008 18:39:53 :
Ajout du lien vers le code en VB
  • signaler à un administrateur
    Commentaire de patatalo le 22/06/2008 15:32:48 administrateur CS

    pourquoi FASM est-il le meilleur assembleur ? sur quoi appuie tu ton affirmation ?

    déjà, il ne permet pas de faire des objets OMF. Ca commence mal pour etre le meilleur, il est limité...

    Donc, qu'apporte-t-il de plus que les autres sinon toute une floppée de macros inutiles et réalisables égalements par tous les autres assembleurs ?


    @++

  • signaler à un administrateur
    Commentaire de ratala le 22/06/2008 18:13:02

    J'ai pas dit que c'était le meilleur, j'ai dit que c'était le meilleur que je connaisse :)
    MASM a l'air pas mal non plus c'est vrai mais il ne permet pas de modifier les sections comme bon de semble comme le fait fasm.

  • signaler à un administrateur
    Commentaire de Nasman le 23/06/2008 08:26:31

    Nasm permet les formats suivants:
    - OMF
    - COFF
    - Win32
    - ELF (Linux)
    - binaire pur (.COM, .SYS)
    - 16, 32 et 64 bits
    + d'autres que j'oublie
    C'est un assembleur multi plateformes.

  • signaler à un administrateur
    Commentaire de patatalo le 24/06/2008 09:08:05 administrateur CS

    autant pour moi, c'est vrai que cela fait toute la différence.
    @++

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS