|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 570 ![]() |
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. |
|
|
70
|
|
|
#2 |
![]() ![]() Timothée BernardÉtudiant Inscription : février 2010 Messages : 365 ![]() |
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 ! |
|
00
|
|
|
#3 |
|
Membre éclairé
![]() |
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. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Citation:
"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:
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
||
|
|
10
|
|
|
#5 |
|
Expert Confirmé
![]() Développeur informatique Inscription : décembre 2008 Messages : 777 ![]() |
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. |
|
|
01
|
|
|
#6 |
![]() ![]() ![]() |
-> 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/ |
|
|
01
|
|
|
#7 |
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 821 ![]() |
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é ! |
|
00
|
|
|
#8 |
|
Membre éclairé
![]() ![]() |
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. |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Étudiant Inscription : janvier 2013 Messages : 58 ![]() |
Il serait bien d'ajouter "n° 1 : ..." dans le titre pour bien suivre avec les autres qui sont tous numéroté.
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() |
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… |
|
00
|
|
|
#11 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 570 ![]() |
Tu as accès à une version PDF dans l'en-tête de l'article.
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() Développeur informatique Inscription : novembre 2006 Messages : 4 453 ![]() |
merci ça m'aide beaucoup !
![]() je suis en train de programmer un compilateur et ça me donne des idées |
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 246 ![]() |
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. |
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() |
|
|
|
00
|
|
|
#16 | |
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 246 ![]() |
Citation:
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. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com