Nouveaux travaux sur un compilateur C pour (e)Z80 via LLVM…
Posted: 03 Mar 2016, 10:27
Sur les Z80, la façon habituelle de programmer en code natif est de programmer directement en assembleur ("langage d'assemblage", pour les extrémistes français). En effet, le processeur Z80 est ancien et n'est pas très bien adapté à la programmation en langage de plus haut niveau - même le C. Sur l'eZ80, version modernisée du Z80, que TI a récemment montée dans les 83PCE et 84+CE après plus de 20 ans de vieux Z80, quelques nouvelles instructions facilitent l'exécution du code compilé depuis le C, par exemple Load Effective Address, proposé par les 68k depuis la fin des années 1970, le 8086 et ses descendants, etc.
Il existe depuis longtemps des compilateurs C ciblant le Z80 et/ou l'eZ80, citons:
Par le passé, il y a eu, dans la communauté TI et ailleurs, des tentatives de créer des backends Z80 pour LLVM et GCC (par AHelper, notamment), ce qui est la partie importante pour cibler un Z80 avec Clang ou GCC. Pour être compatible avec les extensions du compilateur Zilog, des extensions à Clang et GCC seraient nécessaires, mais sont moins importantes. LLVM/Clang est techniquement beaucoup plus moderne que GCC, et la création de backends LLVM est en principe plus facile, même si le nombre brut de lignes de code est plus élevé - les lignes individuelles sont plus faciles à produire.
Avec l'arrivée des TI-eZ80, l'intérêt de créer un backend (e)Z80 pour LLVM a beaucoup augmenté dans la communauté. La toolchain de Mateo, basée sur le compilateur Zilog, popularisée par la capacité "programmes C TI-eZ80" de notre IDE en ligne Project Builder (capacité copiée des semaines plus tard par l'autre IDE en ligne...), et CEmu, donnent aux gens le goût de programmer en C pour les TI-eZ80. Cependant, les limitations du compliateur de Zilog sont pénibles.
Il y a quelques semaines, jacobly, un contributeur majeur de CEmu, s'est mis à refaire un backend Z80 + eZ80 à LLVM, from scratch. Maintenant que ça commence à générer du code dans des cas simples, il a publié ses travaux, pour que les autres puissent contribuer et améliorer, dans l'esprit de partage de notre communauté
Pour l'instant, il reste pas mal de travail, mais c'est une étape importante, et il nous incombe collectivement d'y contribuer, pour ceux qui en ont les compétences et le temps, et d'en tirer parti quand elle fonctionnera bien
Repository du projet: https://github.com/jacobly0/llvm-z80
Source de l'info: IRC (sur EFNet, channel #ez80-dev)
Il existe depuis longtemps des compilateurs C ciblant le Z80 et/ou l'eZ80, citons:
- Small Device C Compiler (SDCC), sur lequel un environnement nommé "tisdcc" avait été créé;
- le compilateur C officiel de Zilog.
Par le passé, il y a eu, dans la communauté TI et ailleurs, des tentatives de créer des backends Z80 pour LLVM et GCC (par AHelper, notamment), ce qui est la partie importante pour cibler un Z80 avec Clang ou GCC. Pour être compatible avec les extensions du compilateur Zilog, des extensions à Clang et GCC seraient nécessaires, mais sont moins importantes. LLVM/Clang est techniquement beaucoup plus moderne que GCC, et la création de backends LLVM est en principe plus facile, même si le nombre brut de lignes de code est plus élevé - les lignes individuelles sont plus faciles à produire.
Avec l'arrivée des TI-eZ80, l'intérêt de créer un backend (e)Z80 pour LLVM a beaucoup augmenté dans la communauté. La toolchain de Mateo, basée sur le compilateur Zilog, popularisée par la capacité "programmes C TI-eZ80" de notre IDE en ligne Project Builder (capacité copiée des semaines plus tard par l'autre IDE en ligne...), et CEmu, donnent aux gens le goût de programmer en C pour les TI-eZ80. Cependant, les limitations du compliateur de Zilog sont pénibles.
Il y a quelques semaines, jacobly, un contributeur majeur de CEmu, s'est mis à refaire un backend Z80 + eZ80 à LLVM, from scratch. Maintenant que ça commence à générer du code dans des cas simples, il a publié ses travaux, pour que les autres puissent contribuer et améliorer, dans l'esprit de partage de notre communauté
Pour l'instant, il reste pas mal de travail, mais c'est une étape importante, et il nous incombe collectivement d'y contribuer, pour ceux qui en ont les compétences et le temps, et d'en tirer parti quand elle fonctionnera bien
Repository du projet: https://github.com/jacobly0/llvm-z80
Source de l'info: IRC (sur EFNet, channel #ez80-dev)