[riscosfr] TCC

  • From: David Feugey <dfeugey@xxxxxxxxx>
  • To: riscosfr@xxxxxxxxxxxxx
  • Date: Mon, 05 Mar 2018 18:00:01 +0100

Question pour les Unixiens.

Je reprends mon code de langage de programmation (il date de 2014 ; la 
honte). Initialement j'avais travaillé sur un modèle interprété, avec 
un tableau d'opcodes pointant sur des fonctions. Un modèle simple et 
bigrement efficace. A se demander pourquoi personne ne l'utilise (je 
n'ai pas trouvé beaucoup d'exemples similaires).

Chaque opcode Basic lançait une fonction via l'appel suivant : 
(*PtrFunction[PoolCode[ProgramCounter]])(&ProgramCounter, 
&PoolCode[0], &PoolInteger[0], PoolString);

C=A+B se traduisant dans un opcode 3, var 3, var 1, var 2. Et par le 
code :
++*ProgramCounter;
PoolInteger[PoolCode[*ProgramCounter+2]]=PoolInteger[PoolCode[*ProgramCounter]]+
 
PoolInteger[PoolCode[*ProgramCounter+1]];
*ProgramCounter+=3;

Soit très peu d'instructions à traiter.

Aujourd'hui je suis sur ma lentissime machine XP et c'est donc vers 
TCC que je me suis tourné pour recompiler ma bestiole. Et pour le 
coup, vu qu'il y a libtcc, l'idée d'un traducteur Basic > C me tente, 
car grâce à lui je peux implémenter un EVAL limité. L'idée : compiler 
le code de l'EVAL à la volée, en remplaçant les variables appelées par 
leurs équivalents dans le programme C, trouvés via un tableau de 
référence.

Venons-en au fait. TCC = pas de RISC OS. Quoique. TCC créé du code ELF 
sous Linux et ARM de surcroit. Donc il pourrait créer de l'AOF. Mieux, 
l'ELF existant sous RISC OS et étant supporté par le cross compilateur 
GCC proposé sous Linux, je me demande même si un portage brut de TCC 
ne serait pas capable à son tour de créer - depuis RISC OS - des 
binaires ELF fonctionnels.

Qui pour tenter le coup côté Linux ? Il faut GCCSDK 4.7.4 R3
http://www.riscos.info/index.php/GCCSDK_Releases

Puis compiler TCC et me le faire passer pour voir si ça marche.
http://download.savannah.nongnu.org/releases/tinycc/

De mémoire GCCSDK est un peu pénible sous Linux, car il marche via des 
scripts automatisant les portages. A l'époque je générais un makefile 
via configure sur mon PC et le reprenait tel quel pour compiler la 
version ARM d'un soft en appelant le cross compilateur en direct. 
C'est sale et vilain, mais cela marche peut-être encore.

Je doute que libtcc marche sous RISC OS, mais vu que la plupart des 
trucs ELF recompilés marchent, je m'interroge.

Et c'est aussi un bon moyen de voir si la méthode ne pourrait pas être 
reprise pour compiler des compilateurs plus gros. Par exemple 
FreePascal.

A+, David
-- 
RISC OS FR - www.riscos.fr
Informations sur RISC OS et sa communauté
Licences ABC et Raspberry Pi gratuits !

Other related posts: