Ça fait un bout de moment maintenant que je travaille sur la conception et construction des processeurs, que ça soit dans le domaine de la recherche ou dans le domaine académique, voici le dépôt GitHub pour tous les processeurs construits jusqu’à maintenant, la plupart sont des processeurs minimalistes éducatifs, sauf peut-être le 6502 qui lui est une implémentation d’un processeur réel, et le Megatron qui est l’implémentation d’une machine réelle. Dans la plupart des cas la programmation sur ces processeurs se fait en langage machine, ça veut dire en binaire, néanmoins quelques-uns ont le privilège d’avoir un assembleur dédié, la création d’un assembleur pour un processeur donnée est trivial et très simple, elle est réalisée à l’aide d’un outil qui simplifie énormément le travail de construction d’un assembleur personnalisé, le nom de l’outil est CustomAsm, il permet de créer un assembleur pour la majeure partie des processeurs actuels, il suffit pour le faire de remplir un fichier de spécification du langage machine et de mettre en correspondance les nouvelles instructions assembleurs à créer.
Mais jusqu’à maintenant je n’ai jamais eu l’opportunité de dépasser cette étape, et passer à l’étape suivante et créer un compilateur distinct pour un processeur donné, la raison est que je n’ai pas trouvé jusque-là une méthode directe et simple pour le faire, crée un compilateur personnalisé n’est pas une simple tâche, ça doit demander beaucoup d’énergie et beaucoup de connaissances théoriques qui ne sont pas si simples. Heureusement à force de chercher et un peu de chance je crois avoir trouvé une solution qui semble relativement gérable, c’est justement un projet fait par une personne avec les mêmes objectifs, créer un compilateur C personnalisé et simplifié pour une architecture matérielle donnée. Le projet semble de difficulté moyenne, disons une estimation entre 5000 et 10000 lignes de code, peut-être plus, c’est très bien documenté, et c’est surtout plus orienté pratique que théorique. Le langage C implémenté n’est pas le langage C complet, mais un sous-ensemble de ce dernier, ça reste quand même d’après l’auteur un compilateur robuste puisqu’il appartient à la catégorie des compilateurs capables de compiler eux-mêmes.