14 votes

Comment "Hello World" fonctionne en C

Je recherche depuis un mois des articles de blog sur "le fonctionnement du programme C". La plupart d'entre eux sont du genre

  1. Les compilateurs font les choses suivantes
  2. Les Linkers font ces choses
  3. Le programme est mis en mémoire, ainsi que les piles, les tas, etc.

Je pensais d'abord lire comment fonctionne un compilateur pour comprendre le flux du programme dans la machine. Le livre du Dragon semble être universellement préféré. Mais honnêtement, c'est trop intensif. Je ne suis pas assez bon maintenant pour le parcourir en entier.

J'ai donc commencé à lire sur le matériel. Mais là aussi, ils expliquent les bus, les signaux d'E/S, la structure de la mémoire, l'écriture d'un code adapté au cache, etc. Mais sans aucun exemple concret.

Mais je ne parvenais toujours pas à me satisfaire ou à visualiser complètement le processus.

Il y a 2 heures, j'ai décidé de poser cette question (car j'ai peur qu'elle ne soit pas utile à la communauté SO, qu'elle soit hors sujet ou qu'elle soit classée dans une autre catégorie) et je n'ai trouvé aucun message se rapportant exactement à cette question. Il y en avait un sur "comment le compilateur fait la compilation", mais les réponses ont montré que c'est une question trop large.

Ma question est la suivante :

J'aimerais savoir comment fonctionne, en profondeur, un programme C. Si vous ne pouvez pas me le dire explicitement, merci de me rediriger vers un livre ou un post sur un autre site qui puisse me donner la réponse à cette question.

Je suis ici jusqu'à ce que je reçoive une réponse. Si vous avez des suggestions concernant ce post, dites-le moi. Et ce n'est pas ma première langue, donc s'il vous plaît prenez toutes mes phrases comme étant douces et polies.

Gracias.

UPDATE :

En plus de la réponse acceptée, il y a des liens très intéressants ainsi que des suggestions qui donnent des réponses partielles ou la façon de procéder pour comprendre ce que j'essaie de comprendre.

4voto

Ernest Friedman-Hill Points 56605

La meilleure réponse à cette question vient de loin du livre "The Elements of Computing Systems", de Noam Nisan et Shimon Schocken. Ce livre part des composants électroniques les plus simples possibles, les assemble en un processeur fonctionnel, invente un langage d'assemblage simple pour celui-ci, écrit un assembleur pour celui-ci, et finalement vous montre comment des langages de haut niveau peuvent être compilés sur celui-ci. En lisant ce livre et en travaillant tous les exemples (qui utilisent un simulateur pour le matériel, donc pas besoin d'atelier !), vous changerez à jamais votre façon de voir les ordinateurs ; vous comprendrez littéralement tout, du niveau le plus bas au niveau le plus élevé, et vous verrez comment ils fonctionnent ensemble. Voir le site web du livre pour plus d'informations.

1voto

onemach Points 151

C'est une question trop vaste (comme vous l'avez observé).

Si vous voulez vraiment comprendre de bas en haut, achetez un vieil ordinateur des années 80 sur ebay. Sinclair Spectrum/BBC, peu importe, mais assurez-vous d'avoir beaucoup de livres et de manuels qui vont avec.

Vous apprendrez beaucoup car ces machines étaient bien documentées et ce qui ne l'était pas a été découvert puis documenté :)

Ils sont aussi tellement plus simples qu'un travail moderne à quatre cœurs et à plusieurs gigaoctets de mémoire. Tout cela tiendra dans votre tête facilement.

ou pour un début moderne, Arduino ou Raspberry pie peut-être.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X