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. #1
    suliman
    Invité(e)
    Par défaut Peut-on tout programmer en Assembleur ?
    Bonsoir tout le monde,

    Débutant dans le milieu de la programmation ASM j'aimerais savoir si on peut tout programmez en ASM, de bas niveau. Et seulement en ASM. Je ne souhaite pas utiliser d'autres types de languages telle que C/C++ (hormis HTLM)

    1. Exemple

    Peut on programmez un browser, un lecteur audio/video, un firewall, un antivirus en ASM, tout une suite logistique sans avoir le moindre code en C/C++ ou autre ?

    Peut-on convertir tout autre code en ASM ?

    J'ai décidé d'utiliser FASM, m'en conseillez vous un autre ? si oui, pourquoi ?

    Certaines questions pour les experts pourraient paraitre débile. C'est normal.

    A+

  2. #2
    Membre confirmé 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
    Points : 567
    Points
    567
    Par défaut
    Citation Envoyé par suliman Voir le message
    Débutant dans le milieu de la programmation ASM j'aimerais savoir si on peut tout programmez en ASM, de bas niveau. Et seulement en ASM. Je ne souhaite pas utiliser d'autres types de languages telle que C/C++ (hormis HTLM)
    Oui mais il faut vraiment aimer. Le seul programme sérieux et fait en ASM que je connais c'est FASM. L'ASM fait souvent éviter des bonnes pratiques comme les variables locales ou le code simple à lire (on est souvent tempté d'optimiser).

    Citation Envoyé par suliman Voir le message
    J'ai décidé d'utiliser FASM, m'en conseillez vous un autre ? si oui, pourquoi ?
    C'est celui-là que je conseillerais aussi mais je ne connais pas de tutoriel ni de livre qui l'utilise donc ça peut valoir le coup de commencer avec NASM ou MASM. Je conseille ce tutoriel-là : http://drpaulcarter.com/pcasm/.
    N'apprends pas l'ASM 16 bits (celui du DOS), ça ne sert à peu près à rien.
    :wq

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    Oui, bien sûr, on peut tout faire en assembleur... c'est un choix.

    Il faut juste avoir à l'esprit que quelque chose de très simple en C, comme un test conditionnel ou une boucle, a un équivalent relativement compliqué et peu lisible en assembleur.

    Après, tu fais ce que tu veux ! Et puis c'est toujours moins nuisible à la santé que

  4. #4
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 55
    Points : 73
    Points
    73
    Par défaut
    Tous les langages compilés de haut niveau tel que le C ou C++ finissent en ASM ...
    L'ASM n'est rien d'autre qu'un ensemble de mnémoniques textuelles liées à une suite de bits constituant les instructions du processeur cible.

    Ensuite comme je disais, les langages compilés comme le C et C++ finissent en ASM ... donc oui tu peux tout programmer en ASM mais le temps de développement ne sera pas le même, ni la maintenabilité du code et encore moins la portabilité de celui-ci ....

    Bon courage.

    Kurapix

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Citation Envoyé par suliman Voir le message
    Peut on programmez un browser, un lecteur audio/video, un firewall, un antivirus en ASM, tout une suite logistique sans avoir le moindre code en C/C++ ou autre ?
    Oui, mais il faudra peut-être y consacrer ta vie ! Non, ce n'est pas tout-à-fait vrai. Je suis moi-même assez fan de la programmation en assembleur et tu y rencontreras des approches que tu ne verrais même pas en langage C.

  6. #6
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Le fonctionnement en lui-meme d'un programme n'est pas plus complique en ASM
    plutot qu'en un autre langage (c'est mon point de vue) par contre, la ou ca se complique, c'est pour l'utilisation des peripheriques

    Maintenant, au niveau optimisation, je suis convaincu qu'un bon programme en ASM ira plus vite qu'un code en C du moment que l'on ait pense son code directement en ASM

    La lisibilite du code depend de celui qui l'a ecrit... Utilisation massive des tabulations pour bien separer visuellement certaines partie du programme,
    et petit recapitulatif des donnes en entree/sortie avant chaque procedure.
    Pas la peine de mettre une description ligne a ligne qui en plus de prendre pas mal de temps, rend le code encore un peu moins limpide

    a+ Francois

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Heo,
    Citation Envoyé par Forthman Voir le message
    Maintenant, au niveau optimisation, je suis convaincu qu'un bon programme en ASM ira plus vite qu'un code en C du moment que l'on ait pense son code directement en ASM
    Sur les processeurs modernes, ça reste à prouver, tant qu'on utilise un bon compilateur.

    Sur ces nouvelles bestioles, il y a tant de paramètres à prendre en compte pour optimiser que ça devient très difficile, voire quasi impossible, pour un humain.
    Si les cons volaient, il ferait nuit à midi.

  8. #8
    Membre confirmé 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
    Points : 567
    Points
    567
    Par défaut
    Et puis à la base optimiser ne sert pas à grand-chose dans beaucoup de cas : http://smallcode.weblogs.us/2006/08/...mize-for-size/
    :wq

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Citation Envoyé par droggo Voir le message
    Heo,

    Sur les processeurs modernes, ça reste à prouver, tant qu'on utilise un bon compilateur.

    Sur ces nouvelles bestioles, il y a tant de paramètres à prendre en compte pour optimiser que ça devient très difficile, voire quasi impossible, pour un humain.
    Vrai, mais encore faut-il que le compilo lui-même ait été conçu proprement (ex: débat ICL vs les autres). En plus, une optimisation « optimale » ne peut être que contextuelle. Le compilo est déjà assez proche du contexte, certes, mais ne peut avoir une notion globale de ce que veux faire le programmeur. Les optimisations qu'il peut apporter ne restent alors que « cellulaires ».

    Un exemple : Quand j'avais une vingtaine d'années, j'ai déssassemblé le BASIC de mon TO8D (à base de 6809E). Deux fois 16K de ROM développés en 20000 lignes d'assembleur pur, où chaque instruction avait un but précis. Le code était rentré au chausse-pied. Ils ont même dû sacrifier un ou deux messages d'erreur un peu trop long parce qu'on pouvait coder une routine entière avec l'espace qu'ils prenaient chacun ! :-)

    Sur le calcul d'une multiplication en virgule flottante (sans copro, bien sûr), il s'agissait de sommer les exposants. À un moment, on trouvait :

    ROLA
    RORA
    BVC (Erreur "Overflow" à l'écran)

    J'ai mis trois jours à comprendre, puis j'ai écrit dix lignes de commentaires. Encore aujourd'hui, ces trois lignes m'émerveillent.

  10. #10
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gao,
    Citation Envoyé par Obsidian Voir le message
    Vrai, mais encore faut-il que le compilo lui-même ait été conçu proprement
    C'était précisé dans mon message :
    Citation Envoyé par droggo Voir le message
    Sur les processeurs modernes, ça reste à prouver, tant qu'on utilise un bon compilateur.
    Si le compilateur est bien écrit, il ne reste pas grand chose qu'un humain peut optimiser mieux que lui.

    Ce qui ne signifie pas qu'il ne faut jamais utiliser d'assembleur, mais ça devrait se limiter à ce que le compilateur ne sait pas (encore ?) faire, sans même parler d'optimiser.

    En dehors de ce cas, il y a 2 ou 3 ans déjà que je ne trouve pas vraiment d'optimisation à faire par rapport aux compilateurs que j'utilise (essentiellement G++, et VS++), même si ça arrive parfois, mais c'est dans ces cas suite à des heures, voire des jours de travail pour gagner quelques cycles horloge, c'est à dire quasiment rien, sauf boucle utilisée des centaines de milliards de fois (et encore).

    Et pour la qualité des code généré, venir parler du Basic du TO8, il faut vraiment n'avoir rien d'autre à proposer, n'est-ce pas ?
    Si les cons volaient, il ferait nuit à midi.

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Citation Envoyé par droggo Voir le message
    Et pour la qualité des code généré, venir parler du Basic du TO8, il faut vraiment n'avoir rien d'autre à proposer, n'est-ce pas ?
    Le code assembleur du Basic du TO8 n'a pas été généré, il a été écrit à la main.

    Sans méchanceté aucune, j'imagine que tu n'as pas mis le nez dedans, et c'est bien dommage parce que c'est une mine d'or. Il est probablement beaucoup plus propre et efficace que la majorité de ce qui se produit aujourd'hui au quotidien.

    As-tu une idée de ce à quoi les trois lignes citées servent ? :-)

  12. #12
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hao,
    Citation Envoyé par Obsidian Voir le message
    Le code assembleur du Basic du TO8 n'a pas été généré, il a été écrit à la main.

    Sans méchanceté aucune, j'imagine que tu n'as pas mis le nez dedans, et c'est bien dommage parce que c'est une mine d'or. Il est probablement beaucoup plus propre et efficace que la majorité de ce qui se produit aujourd'hui au quotidien.

    As-tu une idée de ce à quoi les trois lignes citées servent ? :-)
    J'avais jeté un coup d'oeil à l'époque.

    Qu'il ait été écrit à la main, je ne l'affirmerais pas comme toi.

    Et propre ou pas, que veux-tu faire d'un dinosaure, même propre ? D'ailleurs, avec le jeu d'instructions si limité par rapport aux processeurs récents, c'était beaucoup plus facile.

    Et au risque de me répéter : la plupart du temps, les compilateurs bien faits génèrent du bon code, bien optimisé.
    Ça peut sembler "moins propre", justement en raison des optimisations, qui conduisent souvent à "mélanger" un peu la suite des instructions, pour récupérer au mieux la puissance du proc, en profitant de ses optimisations internes.
    Si les cons volaient, il ferait nuit à midi.

  13. #13
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Quand je parles d'optimisation, je veux dire que les donnees sont calculees au plus juste.

    Il m'est arrive de trouver a plusieurs reprises des programme ou un tableau
    en defini en reel ne contenait que des octets voire des bits

    Quand on code en assembleur, on est oblige de savoir comment fonctionne la machine. avec des langages plus evolues, pas forcement ...

    a+ Francois

  14. #14
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gei,
    Citation Envoyé par Forthman Voir le message
    Il m'est arrive de trouver a plusieurs reprises des programme ou un tableau
    en defini en reel ne contenait que des octets voire des bits
    Là, j'avoue ne pas voir le problème, ou ce que tu veux dire.

    Toute donnée est un ensemble d'octets ou bits.
    Si les cons volaient, il ferait nuit à midi.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Points : 170
    Points
    170
    Par défaut
    Je suppose que la discussion assembleur vs. langage de plus haut niveau est un thread qui doit être aussi vieux que la notion même de langage de plus haut niveau...
    Bien sûr, en théorie, en assembleur, on peut optimiser vitesse et/ou taille du code bien plus qu'avec un langage de haut niveau. Celà fait-il de l'assembleur le langage ultime ? Personnellement, je ne pense pas car le problème est qu'en pratique, les plus grandes optimisations sont algorithmiques et se situent à un niveau "macro" difficilement appréhendable en assembleur.

  16. #16
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 138
    Points : 157
    Points
    157
    Par défaut
    Je pense que la notion temps de devellopement sera de plus en plus determinante dans le futur par rapport au temps d'execution compte
    tenu des performances du matériel .




    Dans cas l'ASM ?

  17. #17
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Feo,
    Citation Envoyé par sylvain giardini Voir le message
    Je pense que la notion temps de devellopement sera de plus en plus determinante dans le futur par rapport au temps d'execution compte
    tenu des performances du matériel .




    Dans cas l'ASM ?
    L'asm continuera à servir ponctuellement pour les parties que les compilateurs ne savent pas (encore ?) faire.
    Il en reste, et ce sont souvent pour des cas où le temps d'exécution peut être critique, ou, pour le moins, important (exemple : calcul multiprécision).
    Si les cons volaient, il ferait nuit à midi.

  18. #18
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 138
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par droggo Voir le message
    Feo,

    L'asm continuera à servir ponctuellement pour les parties que les compilateurs ne savent pas (encore ?) faire.
    Il en reste, et ce sont souvent pour des cas où le temps d'exécution peut être critique, ou, pour le moins, important (exemple : calcul multiprécision).
    D'accord avec toi de la a débuter par l'ASM !


    Nb : Pour moi la question ne s'est pas posée à l'époque....(1983) ......ASM obligatoire .

  19. #19
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gie,
    Citation Envoyé par sylvain giardini Voir le message
    D'accord avec toi de la a débuter par l'ASM !


    Nb : Pour moi la question ne s'est pas posée à l'époque....(1983) ......ASM obligatoire .
    Et de là également vouloir tout faire en asm, je considère que ça démontre une mauvaise appréhension de la programmation.

    Une fois que tu sais appeler une fonction, gérer les variables locales... bref, ce qui s'apprend en quelques minutes, tout faire en asm n'est qu'une perte de temps, perte de lisibilité, et donc de maintenabilité (?), portabilité du code, etc.

    En 83, cela dépend évidemment de la machine, mais on pouvait disposer de compilateurs pour certains langages, généralement assez chers, hélas.
    Si les cons volaient, il ferait nuit à midi.

  20. #20
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    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

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, 11h28
  2. Compilation d'un programme C++ / Assembleur
    Par nicolas66 dans le forum C++
    Réponses: 8
    Dernier message: 25/06/2006, 18h53
  3. Réponses: 2
    Dernier message: 25/05/2006, 19h47
  4. Exposé sur intel 8086 & programmation en assembleur
    Par BRAHIMI MOUSSA dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/02/2006, 21h23
  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, 13h32

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