Introduction
La transformation du texte d'un programme vers une forme exécutable
nécessite plusieurs étapes de transformation. Le regroupement de
celles-ci constitue le processus dit de compilation. Celui-ci
produit un arbre de syntaxe abstraite (comme pour l'interprète BASIC,
page ??) puis une suite
d'instructions pour une machine réelle ou virtuelle. Dans ce
dernier cas, il est nécessaire d'utiliser un interprète des
instructions de cette machine virtuelle. Dans tous les cas, ce que
produit le compilateur doit être relié avec la bibliothèque
d'exécution qui est fournie avec la distribution du compilateur et qui
peut varier selon les processeurs et les systèmes
d'exploitation. Cette bibliothèque d'exécution comprend les
fonctions primitives (comme les opérations sur les nombres, l'interface avec le
système d'exploitation) et le
gestionnaire de mémoire.
Le langage Objective CAML possède deux compilateurs. Le premier est un
compilateur vers une machine virtuelle, il produit du
code-octet (byte-code). Le deuxième
compilateur est un compilateur vers du code natif qui produit des
instructions de processeurs réels, comme les machines Intel,
Motorola, SPARC, HP-PA, Power-PC et
Alpha. Le compilateur de
code-octet privilégie la portabilité alors que le compilateur
natif augmente la rapidité d'exécution. La boucle d'interaction, vue
dans la première partie de cet ouvrage, utilise le compilateur de
code-octet : chaque phrase écrite est compilée puis exécutée
dans l'environnement des symboles déjà définis lors d'une session
d'interaction.