Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 10/09/2012, 15h25   #1
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 570
Points : 4 156
Points : 4 156
Nouvelle série d'articles annoncée dans Le programme de rentrée de la rubrique C++.

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.

Retrouver l'ensemble des articles de cette série sur la page d'index.
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 70
Vieux 10/09/2012, 17h43   #2
mitkl
Rédacteur
 
Avatar de mitkl
 
Homme Timothée Bernard
Étudiant
Inscription : février 2010
Messages : 365
Détails du profil
Informations personnelles :
Nom : Homme Timothée Bernard
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2010
Messages : 365
Points : 1 315
Points : 1 315
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 !
mitkl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2012, 16h15   #3
haraelendil
Membre éclairé
 
Avatar de haraelendil
 
julien Lopez
Inscription : février 2004
Messages : 280
Détails du profil
Informations personnelles :
Nom : julien Lopez
Âge : 25
Localisation : France, Marne (Champagne Ardenne)

Informations forums :
Inscription : février 2004
Messages : 280
Points : 349
Points : 349
Envoyer un message via MSN à haraelendil
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.
__________________
première pré-version de QExtend, projet de bibliothèque communautaire basée sur Qt.
haraelendil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2012, 16h44   #4
Jean-Marc.Bourguet
Expert Confirmé Sénior

 
Inscription : novembre 2005
Messages : 4 970
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 4 970
Points : 5 647
Points : 5 647
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

Citation:
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.
Jean-Marc.Bourguet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/09/2012, 18h06   #5
Freem
Expert Confirmé
 
Homme
Développeur informatique
Inscription : décembre 2008
Messages : 777
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2008
Messages : 777
Points : 2 812
Points : 2 812
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.
Freem est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/09/2012, 18h29   #6
Neckara
Rédacteur/Modérateur

 
Avatar de Neckara
 
Homme Denis
Étudiant
Inscription : décembre 2011
Messages : 2 838
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 2 838
Points : 8 628
Points : 8 628
Envoyer un message via MSN à Neckara Envoyer un message via Skype™ à Neckara
-> 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, ...
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon.

Chaîne Youtube : Vidéos

Ma page DVP : http://neckara.developpez.com/
Neckara est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 12/09/2012, 10h48   #7
Bktero
Modérateur
 
Avatar de Bktero
 
Ingénieur systèmes embarqués
Inscription : juin 2009
Messages : 1 821
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur systèmes embarqués
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2009
Messages : 1 821
Points : 4 603
Points : 4 603
J'ai lu avec intérêt et j'attends surtout la suite

Bravo à Bousk et à son équipe pour la traduction !
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

Pour vos problèmes d'embarqué, utilisez le forum dédié !
Bktero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 10h47   #8
teubies
Membre éclairé
 
Avatar de teubies
 
Inscription : octobre 2002
Messages : 126
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 126
Points : 396
Points : 396
Envoyer un message via MSN à teubies
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.
teubies est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2013, 01h43   #9
kripteks
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2013
Messages : 58
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2013
Messages : 58
Points : 55
Points : 55
Il serait bien d'ajouter "n° 1 : ..." dans le titre pour bien suivre avec les autres qui sont tous numéroté.
kripteks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2013, 12h24   #10
alassanediakite
Membre Expert
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 842
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 35
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 842
Points : 1 304
Points : 1 304
Envoyer un message via Yahoo à alassanediakite
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…
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2013, 13h48   #11
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 570
Points : 4 156
Points : 4 156
Tu as accès à une version PDF dans l'en-tête de l'article.
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2013, 13h31   #12
Mat.M
Expert Confirmé Sénior
 
Développeur informatique
Inscription : novembre 2006
Messages : 4 453
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 : 4 453
Points : 5 874
Points : 5 874
merci ça m'aide beaucoup !

je suis en train de programmer un compilateur et ça me donne des idées
Mat.M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2013, 09h47   #13
Kalite
Membre habitué
 
Avatar de Kalite
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 250
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 250
Points : 116
Points : 116
Envoyer un message via MSN à Kalite
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 ?
Kalite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2013, 10h01   #14
ram-0000
Rédacteur/Modérateur

 
Avatar de ram-0000
 
Homme Raymond
Inscription : mai 2007
Messages : 9 246
Détails du profil
Informations personnelles :
Nom : Homme Raymond
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 9 246
Points : 29 333
Points : 29 333
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
.
ram-0000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2013, 14h06   #15
Kalite
Membre habitué
 
Avatar de Kalite
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 250
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 250
Points : 116
Points : 116
Envoyer un message via MSN à Kalite
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 ?
Kalite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2013, 21h24   #16
ram-0000
Rédacteur/Modérateur

 
Avatar de ram-0000
 
Homme Raymond
Inscription : mai 2007
Messages : 9 246
Détails du profil
Informations personnelles :
Nom : Homme Raymond
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 9 246
Points : 29 333
Points : 29 333
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
.
ram-0000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h00.


 
 
 
 
Partenaires

Hébergement Web