Objectif : Compréhension du fonctionnement d’un processeur virtuel et mise en applications des concepts d’analyse lexical, grammaticale et des concepts de compilation.
Ce projet a été pour moi l'occasion d'approfondir quelques concepts bas niveau toujours utiles à un moment donnée dans la vie de l’informaticien développeur.
Quelques petits exemples d'utilisation
Les multiples sous objectifs de ce programme étaient :
- Ecriture d’un processeur à registres virtuel 8 bits aux spécifications plutôt restreintes :
- 4 Registres ax, bx, cx, dx adressables
- 1 pointeur d’instructions
- 256 octets de mémoire
- 1 Pile
- Un jeu d’instructions assez rudimentaires mais largement suffisant pour s’amuser.
- Un interpréteur pour exécuter le programme en mode interprété.
- Langage dont les mots clef peuvent changer de langue dynamiquement
- Un compilateur vers le bytecode utilisé par le processeur virtuel
- Exécution du programme en mode interprété et compilé
- Transformation en binaire réutilisable.
- Disposer d'un Pas à pas pour debugger les programmes.
- Afficher l'état du processeur virtuel visuellement.
- Un langage de programmation de type Basic / Logo proposant a minima :
- Des variables, chaines de caractères
- Des Boucles
- Des Tests conditionnel
- Branchement sur labels
- Des appels à des sous-routines
- Instructions de dessin simples :
- lignes,
- rectangle,
- déplacement de curseur graphique.
- Changement de couleurs
- Des Instruction de calculs simples ADD, SUB, MUL DIV.
- Changement de langage à la volée.
- Avoir une sortie graphique avec un "outil " pilotable en vitesse, position absolue, relative.