π
<-
Chat plein-écran
[^]

Nouveaux travaux sur un compilateur C pour (e)Z80 via LLVM…

Nouveautés, projets, mises à jour.

Nouveaux travaux sur un compilateur C pour (e)Z80 via LLVM…

Message non lude Lionel Debroux » 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:
  • Small Device C Compiler (SDCC), sur lequel un environnement nommé "tisdcc" avait été créé;
  • le compilateur C officiel de Zilog.
Mais ces compilateurs-là ne gèrent que des dialectes lourdement obsolètes du C, donnent souvent du code peu optimisé, fonctionnent mal (les erreurs du compilateur Zilog sur du code valide ne sont hélas pas si rares que ça). Les compilateurs C/C++ ouverts modernes que sont GCC et Clang ne ciblent pas le Z80 et l'eZ80, ce qui interdit quantité de facilités de programmation.

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)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6858
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude Adriweb » 06 Mar 2016, 19:32

L'absence de réponse veut probablement dire que peu de gens saisissent l'importance de ce projet :P

tl;dr: Eventually, on pourra compiler, pour nos CE, du C récent (pas le vieux ANSI C de Zilog), voire du C++, et en théorie d'autres langages proposés en front-end de LLVM :)

Bon, il y a encore du boulot, bien sûr, d'autant plus que l'aspect 16/24bit du CPU donne du fil à retordre, mais... ça avance...
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80%
 
Messages: 14599
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude critor » 06 Mar 2016, 19:59

Adriweb a écrit:L'absence de réponse veut probablement dire que peu de gens saisissent l'importance de ce projet :P

Au contraire, mais effectivement j'ai omis de prendre le temps de répondre (pour faire d'autres choses), c'est pas bien.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude Ti64CLi++ » 16 Mar 2016, 16:34

Adriweb a écrit:L'absence de réponse veut probablement dire que peu de gens saisissent l'importance de ce projet :P

Je saisis l'importance de ce sujet, mais ne voyais pas l'utilité de ma réponse. ;)
En tout cas, bravo à Jacobly.

Concernant son émulateur de z80 pour Nspire, l'as-t-il modifié?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude Adriweb » 16 Mar 2016, 18:51

neuronix a écrit:Concernant son émulateur de z80 pour Nspire, l'as-t-il modifié?

Pour autant que je sache, pas récemment.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80%
 
Messages: 14599
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude Adriweb » 01 Avr 2017, 14:14

Et environ un an après, après de très nombreuses heures de travail par Jacobly, llvm-ez80 a fort bien avancé ;)

Oiram, par exemple, a pu être compilé avec succès.
Image

C'est cela dit pas terminé, il y a encore des bugs, des choses non supportées, etc.

Une version expérimentale devrait être intégrée au Project Builder, aux côtés de ZDS, prochainement...
Edit: c'est fait !




Pour tester... (une fois les dépendances de build installées)
Code: Tout sélectionner
git clone https://github.com/jacobly0/llvm-z80.git llvm && svn co http://llvm.org/svn/llvm-project/llvm/trunk -r 318998 --force llvm && svn co http://llvm.org/svn/llvm-project/cfe/trunk -r 318998 --force llvm/tools/clang

puis
Code: Tout sélectionner
mkdir -p llvm/build/Debug && cd llvm/build/Debug && cmake ../.. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_PEDANTIC=Off -DLLVM_ENABLE_WARNINGS=Off -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=Z80 -DLLVM_PARALLEL_COMPILE_JOBS=4 -DLLVM_PARALLEL_LINK_JOBS=1 -DBUILD_SHARED_LIBS=ON && cmake --build .

Et enfin par exemple
Code: Tout sélectionner
./bin/clang -target ez80 -xc - -S -o- <<<'void test(void){}'

Ce qui donnera le code ASM ez80.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80%
 
Messages: 14599
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude Lionel Debroux » 01 Avr 2017, 15:43

Parvenir à compiler des programmes non triviaux comme Oiram d'une part, et ensuite faire en sorte que ce qui est compilé ne fasse pas totalement n'importe quoi, sont des étapes très importantes :)
Bravo jacobly.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6858
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude Egocar » 18 Avr 2018, 06:03

Je suis content du succès.
Avatar de l’utilisateur
Egocar
Niveau 0: MI (Membre Inactif)
Niveau 0: MI (Membre Inactif)
Prochain niv.: 0%
 
Messages: 2
Inscription: 18 Avr 2018, 05:55
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude parisse » 15 Juil 2018, 13:02

Adriweb a écrit:puis
Code: Tout sélectionner
mkdir -p llvm/build/Debug && cd llvm/build/Debug && cmake ../.. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_ASSERTIONS=On -DLLVM_ENABLE_PEDANTIC=Off -DLLVM_ENABLE_WARNINGS=Off -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=Z80 -DLLVM_PARALLEL_COMPILE_JOBS=4 -DLLVM_PARALLEL_LINK_JOBS=1 -DBUILD_SHARED_LIBS=ON && cmake --build .


Cette commande echoue chez moi, avec l'erreur suivante:
Code: Tout sélectionner
CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

Il doit surement manquer quelque chose d'evident...
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.1%
 
Messages: 3497
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Nouveaux travaux sur un compilateur C pour (e)Z80 via LL

Message non lude IAMISSAM » 15 Juil 2018, 13:11

Il te manque "ninja", pour l'installer : https://github.com/ninja-build/ninja/wi ... a-packages
Avatar de l’utilisateur
IAMISSAMProgrammeur
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 36.3%
 
Messages: 63
Inscription: 11 Sep 2015, 21:56
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Terminale S SI

Suivante

Retourner vers Actualités

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
812 utilisateurs:
>787 invités
>20 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)