Le système Forth
Mélange un interpréteur et un compilateur Chaque nouveau mot (équivalent d’une fonction en Forth) est compilé immédiatement et devient instantanément disponible Les mots sont séparés par un blanc ou un retour à la ligne Un dictionnaire contient l’adresse du code de chaque mot Une pile de données sert à passer les paramètres entre les mots
Utilisation de la pile
En Forth, chaque mot manipule les objets au sommet de la pile (de données). Certaines opérations manipulent la pile.
Exemple
Définition d’un mot carre qui élève au carré
: carre dup * ; Définition d’un mot cube qui élève au cube
: cube dup carre * ; La phrase suivante affiche 27
3 cube . Note : seul le haut de la pile est important
Modes
Forth dispose de deux modes. Le cœur lit un mot, puis agit. Interprétation : c’est le mode par défaut; tout mot qui est tapé est exécuté, tout nombre est placé sur la pile Compilation : chaque mot ajoute un appel à ce mot dans la compilation courante, chaque nombre génère le code nécessaire pour placer ce nombre sur la pile
Changement de mode: toto démarre la génération du mot toto ; termine la compilation du mot courant : carre dup * ; génère en mémoire, à une adresse libre A, l’équivalent de
call dup call mult ret et rajoute une entrée dans le dictionnaire pour carre pointant sur l’adresse A.
Avantages du modèle
Parseur simplissime (blanc ou retour-chariot) Interpréteur simplissime Compilateur simplissime (un système Forth complet tient typiquement en quelques Ko) Code très compact La pile de données permet de ne pas gérer le passage de paramètres Un mot machine par mot appelé Pas d’allocation de registres.