1
Bonjour,

je cherche un programme pour lancer sur ma ti89 titanium qui compile
en asm un programme écrit en langage machine "Basic".

Je suppose que ce genre de programme n'existe pas à l'heure actuelle,
j'aimerais beaucoup me tromper.

J'ai des petits programmes à faire en algo num à faire parfois à la volée,
et le basic se présente bien pour faire la chose en quelques minutes.

Par contre niveau temps de traitement, c'est parfois pas terrible. voir même
très mauvais, et les batteries qu'il faut changer plus souvent ...

Bref, je me demande à tout hasard s'il y a pas de compilateur,
qui passe du basic en assembleur directement sur la machine,
histoire de pouvoir le faire même en exam, et avoir une convergence plus rapide.

J'ai notamment un cas ou la convergence est très très lente, en automatique
ce n'est pas un problème d'algo, c'est juste que le problème est très complexe.

Et vu que c'est pratique de pouvoir utiliser des fonctions toutes faites en machine
qui n'existent pas en C, exemple taylor, ... d/dx, ...

Exemple très simple; l'algo de newton c'est :

x indice (n+1) = x indice n - f(x indice n)/f'(x indice n).

Je connais relativement bien le C, pourtant la manipulation tel que la dérivée, ça me dépasse un peu.
Et puis il faut avoir un pc à coté pour faire la compilation ...

Bref un peu d'info/d'aide la dessus sont les bienvenus.
2
Salut,

Alors, on va faire simple, la réponse à ta question est : Non, il n'y a pas de compilateur Basic -> asm.

Cependant, on peut compiler du C sur la calc, voire même de l'assembleur, si tu est à l'aise en 68000 (mais oublie le côté "script rapide" en asm).
Pour compiler en C, tu peux utiliser GTC. Pour information, si tu veux compiler du C sur PC, utilise GCC4TI.

Par contre, si tu programmes en Basic, le problème de lenteur ne vient à mon avis pas de ton script, mais du fonctionnement interne des fonctions que tu appelles. Le système de calcul (le CAS) est réputé pour sa lenteur.
Donc même en appelant les mêmes fonctions en C (à travers la bibliothèque existante), tu te retrouveras confronté au même problème.



Il existe une alternative à tout ça : PedroM. ( t3/?id=19 )
C'est un OS libre (GPL), qui remplace complètement AMS (l'OS de TI), et qui propose des fonctions mathématiques avancées, beaucoup plus rapides et fiables que celles de AMS. PedroM est également scriptable, de manière moins poussée que AMS, mais ça devrait suffire pour des algos de calcul. Parcours cette page : t3/?id=1 . Dans les news, tu trouveras des exemples et des tests de ce moteur de calcul, MAY.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
3
moué, je critique pas le travail de cette personne, mais bon ça limite un peu les capacité de la calculatrices de base non ?
4
Euh, au niveau mathématique, non, ça décuple tout ce qui est calcul.
Par contre, il n'y a pas de tracé de fonction par exemple. Mais on peut faire tourner tous les programmes existants dessus.
Après la calc s'utilise en ligne de commande, comme un shell unix, les commandes sont les mêmes. C'est même multitâche.
Donc c'est autre chose. Ca dépend de ton besoin.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
5
PedroM a des manque dans le calcul formel par rapport à AMS (Intégration, limit, Somme, Matrice) mais aussi Pretty Print, Graph et un vrai langage de script (et pas la joke qu'il y a).
Sinon ca marche (ce qui est pas mal!)

Sinon pour en revenir à ton problème, f est-elle connue ou pas ?
6
Et vu que c'est pratique de pouvoir utiliser des fonctions toutes faites en machine qui n'existent pas en C, exemple taylor, ... d/dx, ...

Pour AMS, les fonctions du CAS accessibles en BASIC sont également accessibles en C/ASM, de manière directe (ROM_CALLs) ou moins directe (en passant par primary_tag_list / secondary_tag_list). Il y a même des dizaines de fonctions accessibles en C/ASM mais pas en BASIC: parmi les fonctions très utiles, citons la plupart des opérations sur l'élément top ou les deux premiers smile

Mais c'est bien sûr moins facile d'utilisation. Il faut se plonger dans estack.h (en particulier Tags), basfunc.h, basop.h, et utiliser des versions "récentes" d'AMS (2.05 et plus - ce qui n'est pas un problème pour toi, qui as probablement un 3.10 sur ta 89T). GTC supporte moins de fonctions que GCC4TI, mais il est utilisable on-calc.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
7
Cela dit, ça ne change pas grand chose au niveau de la durée du traitement, pour le coup, vu que ce sont les mêmes fonctions en interne qui sont appelées... à moins que la surcouche du TI-BASIC soit si mal foutue que ça ?
avatar
8
La surcouche n'aide pas vraiment, oui, mais il suffit d'exécuter un développement limité en ligne de commande pour se rendre compte que c'est vraiment le CAS qui plombe l'ensemble.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
9
En meme temps on a un 68k a 10Mhz, il faut pas s'attendre a des perfs d'un Core i7 @3Ghz grin
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
Tu m'étonnes, qu'est-ce que ça serait plus lent !!! hypno
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
En effet, la traduction 1:1 BASIC -> C/ASM ne supprime que le coût de l'interprétation BASIC, mais pas les nombreuses âneries du CAS, citons:
* next_expression_index lent: Samuel Stearley avait fait une implémentation tierce 3-4 fois plus rapide sur les cas courants;
* implémentation trop naïve de l'algorithme de Taylor;
* implémentation bête de la conversion hexa -> décimal, comme montré par int2str de Samuel Stearley;
* push_subscripted_element idiot en présence de fonctions comme polyEval(). fastlist, toujours du même auteur, est vraiment plus rapide sur les "grosses" matrices, malgré le coût du lancement du programme.

Le passage du BASIC au C/ASM peut parfois permettre de tirer parti des fonctions de plus bas niveau pour créer une implémentation de complexité algorithmique plus basse. Ceci peut entraîner un gain plus important que la traduction 1:1 BASIC -> C/ASM smile
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.