Bonjour à toutes et tous, salutations !!
Je suis toujours en train de mettre à jour, tenter d'améliorer une sorte de référentiel pour mes élèves au laboratoire.
Je tente de leur apprendre à programmer en langage ANSI C.
Voici mon petit soucis: j'essaye de leur expliquer le rôle du compilateur lors de la création d'une variable.
Je n'ai pas envie de rentrer dans les détails liés à l'assembleur, et encore moins expliquer en détail comment le compilateur va créer un fichier exécutable à partir d'un code source
et "préparer" le "plan d'éxécution" de celui-ci. Par contre, dans la partie de mon référentiel où j'introduis la notion de variables, j'ai besoin de plus d'informations.
Le compilateur va compiler le code source sur une machine, imaginons que celle-ci soit équipée d'une mémoire de 1Go, et que, pour on ne sait quelles raisons, les variables et données
manipulées par le programme que l'on cherche à compiler (le Data Segment) dépasse la mémoire équipée de l'ordinateur... que va-t-il se passer à la compilation ?
Ceci introduit une sous-question: est-ce que le compilateur a pour rôle de vérifier si la mémoire installée de l'ordinateur qui compile le code source est suffisante pour gérer toutes les variables déclarées et utilisées dans le code source ?
Je ne suis pas certain (il faut le dire: j'ai été un peu flemmard au niveau de mes recherches sur le fonctionnement d'un compilateur comme GNU C Compiler gcc) de l'assertion que j'ai mise dans mon référentiel.
Je dis que si nous cherchons à déclarer une variable, à la compilation, le compilateur va vérifier si il reste de la place en mémoire, si il reste de la place pour réserver l'espace mémoire correspondant au type de variable déclaré,
dans ce cas il "attribue" une adresse à cette variable -- on considère que l'espace réservé pour cette variable dépend de son type mais qu'elle commence à l'adresse fournie par le compilateur.
Dans le cas contraire le compilateur devrait spécifier qu'il n'y a plus de place disponible en mémoire.
Quels seraient vos avis ? Est-ce que je vais dans la bonne direction ?
Merci d'avance pour vos éclaircissements ^^
Partager