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

C++ Discussion :

Programme d'étude sur le C++ bas niveau [Tutoriel]


Sujet :

C++

  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 134
    Points : 33 085
    Points
    33 085
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    L'objectif de cette série d'article d'Alex Darby sur la programmation "bas-niveau" est de permettre aux développeurs ayant déjà des connaissances de la programmation C++ de mieux comprendre comme vos programmes sont exécutés en pratique.

    Ce premier article explique l'importance de connaître le fonctionnement bas-niveau et comment récupérer le code assembleur généré par le compilateur et l'interpréter.

    Programme d'étude sur le C++ bas niveau

    Que pensez-vous de l'importance de connaître le bas-niveau pour un développeur C++ et/ou les autres ?
    Avez-vous déjà analysé le code assembleur et pour quel objectif ?


    Bonne lecture.

    Retrouvez l'ensemble des articles de cette série sur la page d'index.

  2. #2
    Membre éprouvé
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Points : 1 081
    Points
    1 081
    Par défaut
    Article intéressant, cette série est prometteuse !

    Que pensez-vous de l'importance de connaître le bas-niveau pour un développeur C++ et/ou les autres ?

    oui, au moins pour comprendre la transition entre ce qu'un développeur code et ce qu'il voit une fois compilé et exécuté, comprendre que tout n'apparait pas par "magie"


    Avez-vous déjà analysé le code assembleur et pour quel objectif ?

    quelques fois pour débugger mais plus souvent pour comprendre comment telles ou telles choses se passent au niveau des registres par exemple

  3. #3
    Membre confirmé
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Points : 533
    Points
    533
    Par défaut
    Oui, ça s'est un article qu'il est bien :p

    Que pensez-vous de l'importance de connaître le bas-niveau pour un développeur C++ et/ou les autres ? Je penses que c'est un très gros avantage (pour ne par dire un must :p), après ça vient peut-être de ma spécialisation en embarqué


    Avez-vous déjà analysé le code assembleur et pour quel objectif ?
    j'ai très tôt appris à mettre le nez dans ce que le compilo génère, surtout pour voir comment avoir un meilleur rendu en assembleur, et en général, ça donne aussi un meilleur code C. :p

    Après je suis un peu moins familier avec les spécificités du C++, j'attend la suite avec impatience.

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Que pensez-vous de l'importance de connaître le bas-niveau pour un développeur C++ et/ou les autres ?
    C'est souvent amusant, ca sert parfois, mais travailler a trop bas niveau fait partie de ces peches commis au nom de l'efficacite.

    "More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason — including blind stupidity." — W.A. Wulf

    Avez-vous déjà analysé le code assembleur et pour quel objectif ?
    Je dois avoir ecrit quelques dizaines de milliers de lignes d'assembleur (au moins pour 3 archi bien differentes, 8051, 68000, x86), mais ca fait des annees que je n'ai plus fait ca. Plus recemment, j'ai aussi confirme des bugs de compilateurs en regardant l'assembleur genere.

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 835
    Points : 2 625
    Points
    2 625
    Par défaut
    Que pensez-vous de l'importance de connaître le bas-niveau pour un développeur C++ et/ou les autres ?

    Très utilie, pour n'importe quel développeur, y compris de BDD: comprendre sa machine permet d'éviter, par exemple, d'utiliser des chaînes de caractères en guise d'identifiant unique. Ou au moins de savoir que et pourquoi ça plombe les perfs.

    Avez-vous déjà analysé le code assembleur et pour quel objectif ?
    Oui, pour comprendre un bug d'un code qui apparaissait avec VS et pas GCC.
    Ce bug était dû à l'un des nombreux flous du standard:
    le fait que le calcul des expressions passées en argument à une fonction n'est pas imposé.
    J'avais besoin de ça pour automatiser un wrapper: flemme de déclarer à chaque fonction une quantité invraisemblable d'arguments qui étaient toujours à peu près les mêmes, alors j'ai utilisé des tableaux. Mais l'index se décalait mal sous VS...(Le contournement étant naturellement d'utiliser une fonction inline)

    Et j'ai dû recourir à des index parce que bien sûr, on ne peut pas gérer un appel de fonction de façon arbitraire (ou je ne sais pas faire) comme on le ferait en asm à coup de "push ... push ... call ..."

    Sur ce coup, j'étais content de connaître des notions d'ASM.

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 137
    Points
    23 137
    Par défaut
    -> Que pensez-vous de l'importance de connaître le bas-niveau pour un développeur C++ et/ou les autres ?

    J'irais même plus loin, je pense qu'il ne faut pas seulement connaître l'assembleur mais aussi connaître le fonctionnement d'un ordinateur.

    Par exemple pour le parcours d'un tableau tab[i][j][k], ce n'est pas forcément évident que selon comment on parcours celui-ci (en incrémentant les i en premier puis les j ou en commençant par les k puis les j, ...) on a pas du tout les mêmes performances.

    L'assembleur est très utile par exemple pour comprendre pourquoi l'appel de fonction est relativement lourd.

    La simple connaissance du fonctionnement permet de comprendre les coûts de ce qu'on fait et ainsi de coder plus intelligemment.

    Les gains de performances ne sont pas toujours très importante mais si ça ne coûte rien au programmeur, autant avoir les bons réflexes.


    Quand on apprend l'assembleur, c'est l'occasion de voir comment fonctionne les chaînes de compilations, de voir comment le code est exécuté, comment la mémoire est gérée, ...

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 486
    Points : 13 696
    Points
    13 696
    Billets dans le blog
    1
    Par défaut
    J'ai lu avec intérêt et j'attends surtout la suite

    Bravo à Bousk et à son équipe pour la traduction !

  8. #8
    Membre éclairé
    Avatar de nostroyo
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 168
    Points : 680
    Points
    680
    Billets dans le blog
    16
    Par défaut
    Très bon cours.

    Il est vrai que l'assembleur fait peur, mais c'est très intéressant.

    Pour m'amuser j'ai fait la même chose en delphi et devinez... le code généré est très similaire voyez plutôt :



    A pars l'optimisation du Z := 0 tout est identique.

    On voit au passage la restauration du pointeur de pile tout à la fin.

    Pour info le livre Systèmes d'exploitation: Collection Synthex dans son premier chapitre aborde ces notions ainsi que la pile.

  9. #9
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut
    Il serait bien d'ajouter "n° 1 : ..." dans le titre pour bien suivre avec les autres qui sont tous numéroté.

  10. #10
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut et grand merci de l'effort
    Est-il possible d'avoir une version imprimable de l'ensemble de l'article?
    Merci d'avance.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 134
    Points : 33 085
    Points
    33 085
    Billets dans le blog
    4
    Par défaut
    Tu as accès à une version PDF dans l'en-tête de l'article.

  12. #12
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 431
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 431
    Points : 20 621
    Points
    20 621
    Par défaut
    merci ça m'aide beaucoup !

    je suis en train de programmer un compilateur et ça me donne des idées

  13. #13
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut
    Bonjour,

    Je ne sais pas si vous êtes au courant mais de nouvelles parties ont été postées par l'auteur.
    Part 10
    Part 11
    Part 12

    Aller vous les traduire ?

  14. #14
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Citation Envoyé par Kalite Voir le message
    Aller vous les traduire ?
    Il va falloir trouver du temps CPU mais ce serait une bonne idée de compléter la série.

  15. #15
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Il va falloir trouver du temps CPU mais ce serait une bonne idée de compléter la série.
    Je vais essayer de trouver du temps pour le faire. Y a t'il des règles particulière à respecter ?

  16. #16
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Citation Envoyé par Kalite Voir le message
    Je vais essayer de trouver du temps pour le faire. Y a t'il des règles particulière à respecter ?
    Salut,

    Pas de règles particulières et même je te propose 2 options :

    Soit tu fais la traduction toi même et tu gabarises l'article en même temps.

    Soit tu fais la traduction toi même et je gabarise parce que tu n'as pas l'habitude ni les outils ou que tu ne veux pas te prendre la tête avec ces outils (dommage, c'est un bon moyen pour mettre un pied dans la rédaction d'articles).

    Dans tous les cas, tu peux ouvrir un thread de relecture technique dans C et C++ > C++ > Communauté > Contribuez pour chacun des nouveaux articles que tu traduis (envoie moi un MP pour me signaler l'ouverture du thread afin que je m'y abonne).

    Ensuite, c'est la gabarisation (par toi ou par moi) toujours dans le même thread et ensuite c'est la relecture orthographique (dans une autre partie du forum) puis la diffusion (mais là, c'est le boulot de germinolegrand).

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Auriez vous un desassembleur sous linux a me conseiller? Je n'arrive pas a en trouver un qui permette de voir a la fois le code C et le code assembleur, comme sur la capture d'ecran.

    Merci d'avance!

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 134
    Points : 33 085
    Points
    33 085
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    la capture d'écran n'est pas un désassembleur mais un IDE.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    oui j'ai bien compris, laissez moi reformuler alors : "un desassembleur avec une interface me permettant de voir egalement le code source" / "un ide avec un desassembleur integre me permettant egalement le code source"

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 134
    Points : 33 085
    Points
    33 085
    Billets dans le blog
    4
    Par défaut
    L'IDE peut te montrer le code assembleur de ce qu'il compile. C'est tout.

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/02/2013, 22h05
  2. Réponses: 20
    Dernier message: 27/11/2012, 19h16

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