Définition du Micro-forth

Introduction

Le Forth est un langage avec une syntaxe assez d´eroutante mais tr`es efficace. C’est un langage fonctionnel qui se base sur une pile de donn´ee pour passer les arguments aux fonctions. Ainsi, les fonctions sont repr´esent´es par des simples mots, tout comme les variables, les constantes ou les op´erateurs de structures.

La Pile de données

La pile de donn´ees est une pile LIFO (Last Input First Output) qui stocke les paramétres d’appel d’un mot. Exemple :
2 3 + .
Les nombres 2 puis 3 sont empilés puis le mot ’+’ enl`eve ces deux nombres de la pile de données et place le résultat de l’opération au sommet de la pile. Le plus effectue l’addition puis le ’.’ affiche le résultat. On utilise généralement
une notation bien pratique pour d´ecrire l’action d’un mot sur la pile :
Mot ( before — after )
Pour notre exemple précédent :
+ ( a b — a+b )
Il existe beaucoup de mots de manipulations de la pile. Citons parmi eux :
– DUP : duplique le sommet de la pile – DROP : enlève l’élément au sommet de la pile – OVER : duplique l’avant-dernier ´el´ement de la pile – etc…

Notions de mot et de dictionnaire

L’ensemble des mots forth forme un dictionnaire. Il existe deux types de mots : – les mots de base du forth (appell´es core-words) – les mots d´efinis par l’utilisateur
Pour d´efinir un nouveau mot, on utilise la syntaxe suivante :
: nouveau_mot definition ;
Voici quelques exemples de d´efinitions :
: carre dup * ; ( a — a^2) ( Calcul le carre d’un nombre )
: cube dup carre * ; ( a — a^3) ( Calcul le cube d’un nombre )
Certains mots de base peuvent également être définis `a l’aide d’autres mots (swap ´echange les deux nombres au sommet de la pile, rot effectue une rotation entre les trois premiers ´el´ements) :
: over swap dup rot rot ;

Les variables

Les variables sont également des mots. Lors de leur execution, ces mot mettent sur la pile l’adresse de l’espace m´emoire r´eserv´e pour cette variable.
Deux mots deviennent alors fondamentaux :
@ « at » ( addr — value ) Ajoute sur la pile le contenu de addr.
! « store » ( value addr — ) Ecrit value à l’adresse addr.
Voici un petit exemple pour illustrer qui illustre la création, l’affectation et la lecture d’une variable :
variable test 5 test ! test @ .

Définition du Micro-forth

Simplifications
Le but du micro-forth n’est pas de concevoir un nouveau langage révolutionnaire ni d’étudier ses optimisations. L’implémentation souffira donc de nombreuses pertes de vitesse par rapport au langage forth dans un souci de temps. Voici
une liste exhaustive de toute les simplifications :
– liste des core-words trés simplifiée, – calculs sur 32 bits uniquement (plus facile pour l’adressage), – mots du core d´efini en forth (perte de performance originellement gagné en jouant sur un jeu d’instructions plus ´elev´e, exemple : 1+ correspond normalement `a ”inc” alors que 1 + effectue deux instructions pour le processeur), – nombre non-signés uniquement, – interpr´eteur case-sensitive, – base 10 pour l’affichage de toutes les valeurs.

Eléments repris du forth
La plupart des éléments fondamentaux du forth sont repris, en l’occurence :
– la syntaxe, – les mots de manipulations de pile, – la pile de retour (cf. 4.2.2), – le buffer d’entr´ee, – la structure du dictionnaire.
Tous ces éléments sont accessibles par l’utilisateur et forment ´egalement le ”coeur” du syst`eme forth, `a l’aide d’un algorithme relativement simple d´ecrit dans la prochaine partie.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *