IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Peut-on tout programmer en Assembleur ?


Sujet :

Assembleur

  1. #21
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 959
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 959
    Par défaut
    Joe,
    Citation Envoyé par Forthman Voir le message
    Je voulais dire qu'un programmeur qui connait un minimum l'assembleur et donc
    "sait" comment fonctionne reelement un ordinateur aura plus de chance de
    coder quelque chose de performant

    Sinon c'est clair qu'aujourd'hui, coder en ASM... a part pour s'amuser ...

    a+ Francois
    "Comment" le processeur fonctionne est purement matériel, et l'asm ne t'apprendra rien à ce sujet.

    Et connaître l'asm ne te servira à rien si tu utilises un langage de plus haut niveau, qui aura sa propre manière de générer du code.

  2. #22
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Je suppose qu'on est d'accord pour dire qu'un programmeur doit connaitre un minimum de détails de bas niveau comme la hiérarchie mémoire ou a représentation des données. Comment apprendre ça mieux que par la pratique ? En programmant en assembleur on peut réellement se rendre compte de comment sont organisées les données, ce qui se passe quand on appelle une fonction etc.
    Quand je vois le nombre de personnes qui se demandent si il vaut mieux utiliser un switch ou des if/else en cascade, ce qui change quand on passe en 64 bits, si la récursivité est plus lente que l'itératif etc., je n'ai pas l'impression que connaitre l'ASM est inutile pour le programmeur moyen.

  3. #23
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 431
    Par défaut
    Citation Envoyé par dapounet Voir le message
    Quand je vois le nombre de personnes qui se demandent si il vaut mieux utiliser un switch ou des if/else en cascade, ce qui change quand on passe en 64 bits, si la récursivité est plus lente que l'itératif etc., je n'ai pas l'impression que connaitre l'ASM est inutile pour le programmeur moyen.
    +1

    J'ajoute qu'il y a deux grandes tendances en programmation.

    Ceux qui l'approchent comme des « horlogers », avec une grande notion du coût en ressources, de l'aspect « mécanique » si j'ose dire, et ceux qui l'abordent en mathématicien, pour qui la machine n'est finalement que l'étape terminale, que le temps d'exécution d'un algo même mauvais est virtuellement nul et que le reste dépend de la bécane (ceux-là méprisent généralement les programmeurs).

    Le problème, c'est que les machines d'aujourd'hui sont tellement puissantes que la différence de coût entre deux approches n'est pas humainement perceptible. On croit donc pouvoir tout faire et on se retrouve bloqué quand le logiciel est inutilisable parce que trop lent ou trop lourd.

    Ça vaudrait le coup de refaire des séances d'optimisation extrêmes, comme du temps des démos sur des machines < 100 Mhz. Pas seulement pour la beauté de la discipline mais également pour resituer les limites physiques que l'on risque de rencontrer.

    À titre indicatif, 3 Ghz, ça correspond à 10cm-lumière ! À 30Ghz, par exemple, on ne parle même plus de temps de commutation ou autre phénomène électroniques : un front montant n'aurait tout simplement plus le temps de traverser la puce de part en part !

  4. #24
    Membre éprouvé
    Inscrit en
    Septembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 138
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    +1
    Le problème, c'est que les machines d'aujourd'hui sont tellement puissantes que la différence de coût entre deux approches n'est pas humainement perceptible. On croit donc pouvoir tout faire et on se retrouve bloqué quand le logiciel est inutilisable parce que trop lent ou trop lourd.
    +1
    Tout a fait d'accord .
    L'évolution du materiel a conduit a negliger totalement la performance du code .

    Compte tenu de notre grand age nous avons cette culture mais elle disparait
    peu a peu .

  5. #25
    Nouveau candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut
    Citation Envoyé par droggo Voir le message
    Joe,

    "Comment" le processeur fonctionne est purement matériel, et l'asm ne t'apprendra rien à ce sujet.

    Et connaître l'asm ne te servira à rien si tu utilises un langage de plus haut niveau, qui aura sa propre manière de générer du code.
    Pas vraiment d'accord avec ca:
    L'assembleur c'est utile
    * utile si vous débuggez du code sans sources
    * utile si vous codez des drivers
    * indispensable si vous devez manipuler les registres (ex. passage dynamique d'arguments a une fonction ... quand va_list n'est pas suffisant dans le cas du C)


    Et oui on peut optimiser du code objet même du GCC -O3 !!! (le plus dur étant de bien localiser la ressource critique dans le code)

    Pour nombre de professionnels du développement embarqué, les trois compétences a maitriser sont C, assembleur et électronique (sans parler des compétences connexes: gestion de config., normes, ... bref les spécificités métier)

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5
    Par défaut
    Je me permet de répondre ici car le sujet original de Suliman correspond justement à un questionnement qui m'a amené à mettre en place, avec l'aide d'autres personnes, un Forum sur le développement en langage assembleur.

    Pour les uns l'asm doit servir -et servira uniquement - dans le cadre d'optimisations de procédures spécifiques, ce en quoi ils auront tout à fait raison car cela correspond à leurs besoins. Il est clair aussi que dans le cadre d'un travail de programmeur professionnel je vois peu de raisons pour coder des projets consistants en assembleur. Mais cela ne veut pas dire que le faire en assembleur serait beaucoup plus long.

    Le langage assembleur a également évolué avec l'aide de contributeurs doués qui ont permis de simplifier le travail si l'on souhaite tout faire en asm. Des macros évoluées, des fonctions de haut niveau, tout comme des librairies de qualité sont mises à disposition des développeurs en assembleur pour faciliter leur travail, mais peu de gens en ont conscience, parce que le plus souvent quand on parle d'asm cela concerne des procédures en codage pur. Or l'assembleur ne s'arrête pas à cela, il est possible de se servir de fonctions de haut niveau puis optimiser le code en asm pur en fonction des besoins. C'est pourquoi j'ai mis en place un Forum qui, je l'espère, permettra d'aider des personnes motivées à réaliser des projets consistants en assembleur s'ils souhaitent s'amuser (le mot est lâché) dans ce langage.


    Meilleures Salutations à Tous,

    Faiseur

Discussions similaires

  1. Les outils que vous utilisez pour programmer en assembleur
    Par Smortex dans le forum x86 32-bits / 64-bits
    Réponses: 36
    Dernier message: 15/08/2022, 12h28
  2. Compilation d'un programme C++ / Assembleur
    Par nicolas66 dans le forum C++
    Réponses: 8
    Dernier message: 25/06/2006, 19h53
  3. Réponses: 2
    Dernier message: 25/05/2006, 20h47
  4. Exposé sur intel 8086 & programmation en assembleur
    Par BRAHIMI MOUSSA dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/02/2006, 22h23
  5. Un programme en assembleur qui indique le bit de parité
    Par bsamah dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/02/2006, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo