J'essaie de comprendre le processus d'écriture d'un code dans un certain langage pour qu'il soit exécuté par le système d'exploitation. Dans mon cas, le langage serait le C et le système d'exploitation serait Windows. Jusqu'à présent, j'ai lu de nombreux articles, mais je ne suis pas sûr d'avoir bien compris le processus, et j'aimerais vous demander si vous connaissez de bons articles sur des sujets que je n'ai pas trouvés.
Voici donc ce que je pense savoir sur le langage C (et fondamentalement sur d'autres langages) :
Le compilateur C lui-même ne gère que les types de données, les opérations mathématiques de base, les opérations sur les pointeurs et le travail avec les fonctions. Par travail avec les fonctions, j'entends comment passer un argument à la fonction et comment obtenir la sortie de la fonction. Lors de la compilation, l'appel de la fonction est remplacé par le passage d'arguments à la pile, et si la fonction n'est pas en ligne, son appel est remplacé par un symbole pour l'éditeur de liens. Le linker trouve alors la définition de la fonction, et remplace le symbole pour passer à l'adresse de cette fonction (et bien sûr revenir au programme).
Si ce qui précède est généralement vrai et que j'ai bien compris, à quel endroit du fichier .exe final l'éditeur de liens enregistre-t-il les fonctions ? Après la fonction main() ? Et qu'est-ce qui crée l'en-tête .exe ? Le compilateur ou l'éditeur de liens ?
Les capacités supplémentaires du langage C, aujourd'hui connues sous le nom de bibliothèque standard C, sont un ensemble de fonctions et leurs déclarations, que d'autres programmeurs ont écrites pour étendre et simplifier l'utilisation du langage C. Mais ces fonctions, comme printf(), étaient (ou pouvaient être ?) écrites dans un autre langage, ou en assembleur. Et c'est là qu'intervient ma question suivante : la fonction printf(), par exemple, peut-elle être écrite en langage C pur sans utiliser d'assembleur ?
Je sais que c'est une question assez vaste, mais je veux surtout savoir si j'ai raison ou non. Et croyez-moi, j'ai lu beaucoup d'articles sur le web, et je ne vous demanderais pas si je pouvais trouver ces informations réunies en un seul endroit, dans un seul article. Au lieu de cela, je dois rassembler des informations au coup par coup, et je ne suis donc pas sûr d'avoir raison. Je vous remercie.