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 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    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.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  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 : 32
    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
    Si vous ne savez toujours pas ce qu’est la récursivité, relisez cette phrase.

    Mon blog sur la programmation et l'informatique !

  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 : 36
    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.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 832
    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 145
    Points
    23 145
    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
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    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 : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    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.
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  11. #11
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Tu as accès à une version PDF dans l'en-tête de l'article.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  12. #12
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    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 360
    Points : 20 378
    Points
    20 378
    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 367
    Points
    50 367
    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.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  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 367
    Points
    50 367
    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).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  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 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    la capture d'écran n'est pas un désassembleur mais un IDE.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  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 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    L'IDE peut te montrer le code assembleur de ce qu'il compile. C'est tout.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

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

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