★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
4/5.2 - Le compilateur Forth | Coding Classeurs Weka |
4/5.2 Le compilateur ForthLe langage Forth est d'un fonctionnement tout à fait paradoxal car il intègre à la fois un interpréteur, un compilateur et un assembleur. La version F83 dispose même de trois interpréteurs :
Les deux premiers sont écrits en Forth, le dernier est écrit en langage machine. Le compilateur Forth travaille en une seule passe et sans gérer de table de référence. Ce compilateur est plus exactement un pseudo-compilateur dont la seule fonction est d'accroître les fonctions disponibles dans le dictionnaire L'assembleur Forth travaille également en une seule passe et sans gérer de table de référence. Il peut traiter les branchements avant en utilisant des structures de contrôle évoluées à la place d'étiquettes. Une séquence peut être assemblée entre deux définitions compilées en Forth. Au démarrage de Forth, tout part de l'interpréteur externe (celui qui vous dit OKI et dont le fonctionnement est très simple : si un mot est tapé au clavier I. Compilation de votre première définition A titre d'exemple, nous allons compiler une définition que l'on appellera AFFICHE-BINAIRE et dont le rôle sera d'afficher en binaire un nombre préalablement déposé au sommet de la pile de données : : AFFICHE-BINAIRE Le mot : (deux-points) ouvre une séquence de compilation et est suivi du libellé du mot à définir. Le nom peut être composé de tous les caractères ASCII dont le code est compris entre 33 et 126 à l'exclusion de tout espace ou caractère de contrôle. La longueur d'un mot est comprise entre 1 et 32 caractères. Le nom est suivi de la définition : 2 BASE ! passage en base numérique binaire La fin de la séquence de compilation est marquée par le mot ; (point-virgule). Vous êtes à nouveau en mode interprétation. Maintenant votre nouvelle définition fait partie du dictionnaire Forth, comme vous pouvez le voir en tapant WORDS. Pour essayer le fonctionnement du mot que vous venez de créer, il suffit de taper : 14 AFFICHE-BINAIRE affiche 1110 Si vous trouvez qu'AFFICHE-BINAIRE est trop long, réécrivez votre définition en l'appelant B. ou mieux, en définissant B. comme suit : : B. AFFICHE-BINAIRE ; Tout mot compilé dans le dictionnaire Forth peut être intégré à une nouvelle définition. II. Les constantes et les variables simple précision Tout programme écrit en Forth, aussi sophistiqué soit-il, ne peut pas toujours traiter des données provenant de la pile de données. Dans certains cas on fera appel à des constantes et des variables. Les constantes sont définies à l'aide du mot CONSTANT: 1988 CONSTANT ANNEE Les variables sont définies à J'aide du mot VARIABLE: VARIABLE JOURS La constante ANNEE et la variable JOURS figurent maintenant dans le dictionnaire Forth, c'est-à-dire qu'elles sont disponibles au même titre qu'un mot compilé par : (deux-points) ou n'importe quelle autre primitive déjà définie dans Forth. Seule l'exécution de ces mots diffère de celle d'un mot défini par : (deux-points). Une constante dépose au sommet de la pile de données la valeur affectée au moment de sa définition : ANNEE . affiche 1988 Une variable dépose au sommet de la pile de données l'adresse contenant la valeur qui lui a été aflectée ou qui devra y être affectée. JOURS . affiche une adresse 16 bits Le contenu de cette adresse est déposé sur la pile par l'exécution du mot @ : JOURS @ . affiche 0 Une valeur numérique 16 bits peut être stockée dans une variable par l'exécution du mot ! : 15 JOURS! puis JOURS @ . affiche 1 5 En fait, les mots @et ! agissent sur n'importe quelle adresse mémoire. Si vous tapez : 256 @ . Forth affichera le contenu 16 bits des adresses 256 et 257 et dont voici le mécanisme d'exécution : adresses: 256 257 n n = b * 256 + a ______ ______ L'inversion des valeurs a et b est valable pour les versions F83 tournant sur des systèmes équipés de microprocesseurs Z80, 8080 ou 8086. Sur les autres systèmes, le mécanisme diffère mais le résultat figurant au sommet de la pile de données sera identique. Forth dispose d'un certain nombre de variables pré-définies et utilisées par le système. L'une d'elle, la variable BASE que nous avons déjà utilisée, peut être modifiée au gré de l'utilisateur. Voyons, avec un nouvel exemple, comment afficher un nombre dans une base numérique autre que la base numérique courante, ceci quelle que soit la base de départ et sans altération de celle-ci : VARIABLE NOUVELLE-BASE 2 NOUVELLE-BASE !Exemple d'utilisation : |
|
|
Page créée en 412 millisecondes et consultée 607 fois L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |