vendredi 9 mai 2014

Compilateur

Qu'est-ce que la compilation. Nous avons affaire à un programme écrit dans un language
de haut niveau - et donc portable d'un type d'ordi à l'autre - et nous voulons le rendre
compréhensible à un ordinateur particulier, executable en code machine (binaire). On se servira donc

d'un compilateur particulier qui marie un certain type de processeur et architecture.

Au niveau d'un programme en C, la compilation devra procéder par étapes. Il y en a quatre.

Préprocesseur: Dans le cas du C, les # include ajoutent à ce que l'ordi sait faire déjà.
Du point de vue physique, les commandes du include sont ajoutées en début de programme;
ce qui facilite les choses au programmeurs.

Compilateur: Cette étape consiste à passer en assembly language, les termes de
déplacement en mémoire; push, pop, move; le tout en séquence. Chaque marque de CPU

aura son prope vocable de compilation, que l'on appelle assembly language.

Assembly: Certains languages requièrent l'édition des liens avant la production d'un

fichier exécutable. En fait les libraries contiennent des fichiers pré-compilés, et il faut toujours résoudre les symboles. Java et .Net s'occupent de cette phase de façon dynamique -
pendant l'éxécution - d'autres pas.

Machine code: Les instruction s'enchaînent en binaire et l'ordi peut s'exécuter.

Le programmeur connaît la correspondance entre les termes mémoire et le machine-code particulier. Il lui serait possible d'intervenir au niveau binaire à l'aide d'un tableau de correspondance.

Le tout reste modulaire.

 La version du Hello World est command-line. argc veut dire argument count, et argv, argument vector.

 Voici ce que deviennent les include:
 Nous voici en Assembly language:









Le programme s'identifie. Unix se sert de ASCII pour marquer le contrôle avec un ^; le signe
^@ veut dire null; le sigle ^A start.
 Mais c'est à ce niveau que l'on peut intervenir:
 Modulaire: avec Unix, on demande l'exécution avec la commande ./a.out, et a.out est le fichier à exécuter. Noter que l'on s'adresse ici au compilateur.


Aucun commentaire: