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 :

Quand faites-vous de l'assembleur ?


Sujet :

Assembleur

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut Quand faites-vous de l'assembleur ?
    Bonjour,
    j'aimerais savoir à quelles occasions vous êtes obligé(e) de faire de l'assembleur ? Avez-vous des situations concrètes où l'utilisation de l'assembleur s'est imposé à vous ?

  2. #2
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut Obligation d'ASM
    Je suis un adepte de Delphi... En 32 bits, ce dernier possède un éditeur d'assembleur intégré.
    Un jour j'ai eu besoin de manipuler des nombres entiers très grands dépassant allègrement les capacités de huit malheureux octets. La seule solution, se constituer une bibliothèque de manipulations-calculs spécifiques. En pascal compilé cela reste possible, mais bonjour la lenteur des calculs et des affichages, rédhibitoire! Et bien l'asm a apporté un sacré plus... sans comparaison.

    Voilà : l'ASM quand on veut dépasser les limites d'un langage compilé de haut niveau.

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Pour ma part je prog assembleur que en amateur , je prog pour de vielle console ( snes , megadrive , nes) , étant des console de 'faible puissance' mais qui demande d'optimiser un max pour faire un jeu vidéo (collision , gameplay , rendu ect) assembleur me semble obligatoire surtout que obliger de passer par assembleur pour discuter avec le matériel.

  4. #4
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci pour vos réponses.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 397
    Points : 424
    Points
    424
    Par défaut
    Salut.

    Je programme uniquement en assembleur.
    J'ai tout de même commencé par le C, mais j'ai zappé au bout d'un mois.
    Je faisais des petits trucs sympa, mais sans réellement comprendre ce que je faisais. En faite, c'était plus du visuel qu'autre chose.
    Par exemple, je savais que pour déclarer tel truc il fallait le faire à tel endroit, mais sans en connaître la raison.
    Je me suis dit que ce n'était pas avec le C que je progresserais, vu à quel point il est simple de faire des programmes sans rien comprendre à ce qu'on fait.
    Et je n'aimais vraiment pas ne pas comprendre ce qu'il se passait en background.

    Puis au-delà de ça, j'ai entendu plus d'une fois que lorsqu'on sait programmer en asm, on peut ensuite passer à n'importe quel HLL facilement et rapidement.
    Egalement qu'il est faux de dire qu'il est plus long ou plus compliqué de coder en assembleur. Je confirme (mais à l'époque c'était vrais).
    Pour l'instant, à chaque fois que j'ai re-codé un programme C en asm, j'ai divisé sa taille environ par 5.

    Par exemple il y a quelques temps, je debug un code qui a été écrit en C. Je vois une partie de code qui ressemble à un switch assez grand. Je met un petit moment à comprendre qu'en faite c'est un simple strlen !
    Autant de ligne de code pour un strlen..! (environ 30)
    Alors qu'un strlen asm fait 7 lignes..

    Pour une utilisation uniquement personnelle, je ne vois absolument aucun intérêt de coder en C.

    Je suis une des rares personnes qui a plus de mal à lire un code C qu'un code asm ^

    Un document parlant du language asm:
    http://www.int80h.org/

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Personnellement je ne suis pas d’accord avec toi ,je suis beaucoup plus un expert en C que en asm , il est vrai que c'est possible de coder en C sans rien comprendre mais en général en ne va pas très loin , le C demande normalement de la rigueur a son programmeur et la plupart qui savent bien programmer en C savent comment marche derrière.

    Après je suis plutôt étonné que tu ne fasse pas mention du plus gros défaut en asm (enfin pour moi) , c'est le manque de paradigme possible l'asm est purement impératif , c'est pas super simple de faire du fonctionnel/procédural comme en C par exemple et rien que cela le je préfère largement le C (certes il existe qql macro permettant de faire un peu plus haut niveau) d’ailleurs le C a été fait pour créer des OS par exemple ,en plus le C a des bonnes performances qui sont même d’après wikipedia avec certain compilateur et certaines famille de processeur plus rapide en C que en asm.
    Mais je trouve toujours intéressant de programment purement en assembleur et il existe qql cas particulier ou la programmation en asmest plus avantageuse , sinon si c'est pour faire un programme sur windows/linux/mac le C est largement avantageux (et multiplateforme) que en asm ou ça sera galère de passer chaque fois par OS (d'ou pourquoi asm en embarqué est moins contraignant).

    Bref pour ma part le C demande vraiment beaucoup de rigueur et de pratique pour pouvoir apprécier ce langage.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 397
    Points : 424
    Points
    424
    Par défaut
    Ouep, en même temps concernant le C je donne mon avis à mon niveau (1 mois).

    Je sais qu'il y a des codeurs C qui sont vraiment excellents, voir qui font partie de l'élite, et qui ont fait le choix délibéré de coder en C alors qu'ils savent parfaitement coder en asm.
    Mais il y a aussi beaucoup, voir énormément de codeur C qui se reposent sur cette facilitée de codage, et qui ne cherchent pas à comprendre les choses, et qui bien sur, comme tu le dis, ne vont pas très loin, ou bien codent de mauvais programmes.
    Avec l'asm, comme le dit le mec dans le site que j'ai mis en lien, c'est peu probable, ce genre de personne abandonnent rapidement, car avec l'asm si tu ne cherches pas à comprendre t'es exit direct.

    Pour le reste, je n'ai pas assez de connaissance en C pour te répondre. Mais comme je disais dans mon précédant post, je parlais de l'asm pour une utilisation uniquement personnelle.
    C'est vrais que pour la portabilité ou la compréhension par d'autres personnes, le C est indispensable.
    Mais moi personnellement, pour faire des programmes uniquement pour moi, je ne vois pas d'intérêt dans le C.
    Je veux dire, tout ce que je pourrais faire en C je peux le faire en asm et en mieux.
    Enfin je crois ! Après peut-être que je me trompe car justement je n'ai pas fait assez longtemps de C.

    Le premier code que j'ai fait lors de mon passage en asm, c'est réécrire un client smtp que j'avais codé en C. Je l'ai codé pratiquement comme je l'ai lu, en une fois, et en mieux, plus performant et beaucoup plus petit.

    Toutes les conversions que j'ai pu voir du C vers l'asm faite par gcc étaient vraiment affreuses.
    Hormis pour les switchs par exemple où les algo ont l'air de bien faire leur travail, à base de jna, jb etc.. Mais le truc, c'est qu'en asm, il est parfois possible d'utiliser des méthodes différentes d'une simple succession de "cmp / jnz", qui seront parfois encore plus courtes ou performantes que la méthode gcc à base de "cmp - jna / jb etc..".
    Avec l'option d'optimisation, j'ai testé une fois, c'était encore pire, ça rajoutait environ 30% de ligne de code.

    Un exemple autre que le strlen, un base64 trouvé sur un forum. Je l'avais téléchargé justement pour regarder la taille du code asm que gcc sortirait, car je pensais impossible qu'il puisse faire aussi bien qu'un être humain pour un truc pareil, et effectivement, c'est encore pire que ce que je pensais.
    Gcc sort un code asm de 650 lignes il me semble. Avec l'option d'otimisation, 1000 lignes !
    C'est dingue car en asm, rien qu'avec 650 lignes, il est possible d'écrire un gros programme, quelque chose de bien complexe, et pas juste un base64.

    (Mon base64 doit faire environ 150 lignes (le rapport de compression habituel d'environ 1/5). Je ne le post pas, mais si tu veux le voir je peux te l'envoyer).

    Pour les OS, regarde sur le forum fasm, beaucoup font des OS qui tiennent la route, très performant.
    L'exemple le plus connus est MenuetOS, mais il y en a d'autres sur le forum.
    Il y a même un mec qui avait pour projet de réécrire en asm le kernel Linux.

    Je n'essaie pas de prouver la supériorité de l'asm à tout prix, j'essaie vraiment de comprendre ce que pourrais m'apporter le C (pour une utilisation personnel), mais pour l'instant à chaque fois que j'ai comparé, j'ai été très déçu.

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ok, merci de ton point de vue
    C'est vrai tu as raison que le C est un faux ami pour le débutant , c'est un langage verbeux mais pour le manipuler il faut bien comprendre les mécanisme derrière.
    Disons que je suis étonné de ne pas que tu trouve de manière personnel utilité pour faire du C, alors que moi "j'abuse" utilisation des macro en asm.
    Mais c'est évident que asm permet une bonne compression du code , c'est pour cela que je utilise d'ailleurs
    Bon tout dépent de ce que tu code , pour ma part je me sentirais pas de coder un moteur 3D en asm.
    Mais bon c'était juste pour revenir sur ce point sur le C , je suis finalement assez d'accord avec toi sur ce deuxième post , donc je dirait si tu n'as fait que 1 mois du C ,je pense que il te manque encore beaucoup de pratique ,personnellement je considérée qu'il m'a fallu au moins 3 ans de pratique intensive du C pour bien le maitrisé et bien exploité sa puissance et ces avantage (bas et haut niveau a la fois).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 397
    Points : 424
    Points
    424
    Par défaut
    Ouai c'est clair, d'ailleurs ce manque de pratique du C me pose des problèmes pour le debugging de code.

    Bah ce que je code, c'était vraiment uniquement dans un but d'apprentissage, pour l'instant en tout cas.
    Le dernier gros truc que j'ai codé c'est une pile tcpip. M'enfin, je sais pas si on peut dire "pile".
    Disons que la partie header est géré complètement, du header ethernet au tcp.
    Et les paquets sont envoyés et reçu via af_paquet.
    J'ai donc du implémenté le systême handshake à base de syn-psh-ack etc..
    Au final j'ai fait un serveur et un client l'utilisant.
    C'était plutôt jouissif de coder ça en asm. ^ Et surtout ça m'a permis de voir grandeur nature ce que j'avais appris dans la rfc.

    SInon en 3d, je n'y connais rien du tout pour l'instant. Mais pareil c'est un truc qui doit être plutôt gratifiant à coder.

  10. #10
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    ben je n'ai jamais coder un client/serveur , mais oui je pense que c'est plutôt gratifiant de coder ça en asm.
    Oui la 3d c'est un vaste domaine mais c'est très gratifiant de le coder sois même (au lieu de passer sur une librairie/moteur 3D).

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 397
    Points : 424
    Points
    424
    Par défaut
    Au début je voulais commencé par la 3d..
    C'était quand j'ai commencé le C. Puis finalement j'ai zappé car j'avais trouvé ça un peu compliqué pour tout de suite commencer par ça.

    Il y a un game engine "kelvar unREAL engine" codé par le créateur de fasm.
    http://flatassembler.net/examples.php
    Par contre aucune idée si c'est 2d ou 3d, car x32 uniquement et ne fonctionne pas sous mon win64, je n'ai pas encore pu le tester.

  12. #12
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    c'est marrant de vous voir parler de 3d en assembleur car je me suis mis a l'assembleur après avoir été déçu de la lenteur d'un moteur 3d fil de fer que j'avait réalisé en Qbasic et le temps que j'apprenne correctement a me servir de l'assembleur je me suis totalement désinteressé de la 3d et ce n'est que réçamment que je me suis amusé a porter mon prog qbasic en javascript (visible ici: http://bifur.olympe.in/test.html) et puis je me suis aussi désinteressé du javacript...

    ça me donne envie d'essayer de le passer en assembleur. ça me permettra au moins d'essayer d'utiliser le fpu. ce que je n'avait jamais fait avant (traçer un ligne sur un écran vesa je doit avoir une fonction qui fait ça dans un coin de mon disque dur)

  13. #13
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    @n5Rzn1D9dC
    Commencez par la 3D ça me semble difficile il faut mieux déjà être a l'aise avec le langage qu'on utilise je pense , pour "kelvar unREAL engine" ça me semble d’être un moteur 2D (vu les ressources ).

    @bifur je trouve cela très interessant de faire la 3D software et evidamment le faire en assembleur permet d'avoir a mon avis de très bonne performance .
    Pour faire de la 3D il faut clairement éviter les langages interpréter surtout si on utilise pas la carte graphique.
    Sinon je trouve ton test du cube pas mal ^^

Discussions similaires

  1. Que faites-vous quand votre code refuse obstinément de fonctionner ?
    Par Gordon Fowler dans le forum Actualités
    Réponses: 89
    Dernier message: 28/01/2010, 16h11
  2. Quel usage faites vous de Python (2004 - 2008) ?
    Par Guigui_ dans le forum Général Python
    Réponses: 130
    Dernier message: 03/12/2008, 23h59
  3. [Morale]Que faites vous quand vous êtes dégoutés ?
    Par mamiberkof dans le forum La taverne du Club : Humour et divers
    Réponses: 33
    Dernier message: 10/01/2007, 17h24
  4. Réponses: 11
    Dernier message: 14/05/2006, 15h01
  5. [Emploi/Stage] Que faites-vous en ce moment?
    Par Nasky dans le forum Emploi
    Réponses: 20
    Dernier message: 11/08/2005, 11h57

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