π
<-
Chat plein-écran
[^]

KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude parisse » 04 Juil 2018, 09:17

Je ne sais pas si ca vaut le coup d'essayer. En tout cas en ce qui me concerne, je ne vais pas me lancer la-dedans : il y a beaucoup de travail qui a ete mis en oeuvre pour que le linkage fonctionne, en particulier sur l'association entre les commandes et leurs adresses en memoire, et ca serait surement a refaire, tout ca avec un support tres minimaliste pour mettre au point (pour le portage actuel, j'ai pu m'aider d'une version "miroir" i386 debuggable, la ca ne serait plus possible). Je peux bien sur epauler quelqu'un qui voudrait se lancer la-dedans.
Ce serait a mon sens plus productif d'attendre la nouvelle version de l'OS, peut-etre que la limite superieure des addins va augmenter, voire de contacter Casio. Et bien sur de faire un 2eme addin "editeur de programmation" qu'on puisse appeler facilement depuis KhiCAS.

Voila le resultat de objdump:
Code: Tout sélectionner
test.elf:     file format elf32-sh

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         001d19b6  00300000  00300000  00000100  2**5
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .rodata       00023be0  004d19b8  004d19b8  001d1ab8  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .data         00000319  08100004  004f5598  001f5704  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  3 .bss          00000644  08100320  004f58b1  001f5a20  2**2
                  ALLOC
  4 .bss._ZZNK4giac6tensorINS_3genEE8dbgprintEvE4sptr 00000004  08100964  004f58b1  001f5a64  2**2
                  ALLOC
  5 .bss.cout     00000001  08100968  004f58b1  001f5a68  2**0
                  ALLOC
  6 .comment      00000022  00000000  00000000  001f5a1d  2**0
                  CONTENTS, READONLY
  7 .debug_info   0000b496  00000000  00000000  001f5a3f  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00003a87  00000000  00000000  00200ed5  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_loc    00003e94  00000000  00000000  0020495c  2**0
                  CONTENTS, READONLY, DEBUGGING
10 .debug_aranges 000004a8  00000000  00000000  002087f0  2**0
                  CONTENTS, READONLY, DEBUGGING
11 .debug_ranges 00000610  00000000  00000000  00208c98  2**0
                  CONTENTS, READONLY, DEBUGGING
12 .debug_line   00002656  00000000  00000000  002092a8  2**0
                  CONTENTS, READONLY, DEBUGGING
13 .debug_str    00000909  00000000  00000000  0020b8fe  2**0
                  CONTENTS, READONLY, DEBUGGING
14 .debug_frame  00000a5c  00000000  00000000  0020c208  2**2
                  CONTENTS, READONLY, DEBUGGING
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude Lephe » 04 Juil 2018, 09:43

Je comprends que le gain est loin. Je ne suis pas sûr de savoir quelles difficultés ont été rencontrées dans le linkage parce que les linker scripts que tu as utilisés sont standard, mais ce n'est pas très important. J'espère moi aussi que la taille limite des add-ins augmentera avec la mise à jour.

Je reviens rapidement au dump. J'avais d'autres idées (plus simples) mais le gain ne sera probablement pas intéressant. Par contre j'ai regardé le Makefile et je n'ai trouvé aucune preuve que toutes les sections inutiles ci-dessus (probablement toutes sauf les trois premières) ont été retirées. Quand je fais mes add-ins je les retire systématiquement. La partie BSS n'est pas significative, mais les commentaires et les informations de debug sont supprimables sans sommation à coup sûr.

Vu que les options utilisées pour linker cet ELF et pour produire l'exécutable final sont les mêmes, je suis tenté de croire qu'elles se promènent aussi dans l'exécutable final. Ça représenterait quasiment 100k très facilement récupérables. Est-ce que j'ai raté l'option qui les supprime ou y a-t-il un chance que mon analyse soit correcte ?
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude Lionel Debroux » 04 Juil 2018, 09:52

Je pense que ton analyse est correcte, si c'est bien ce binaire-là, manifestement non strippé (ou pas assez strippé - les infos de debug sont habituellement beaucoup plus grosses que le programme lui-même), qui est utilisé sur la calculatrice.
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: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude parisse » 04 Juil 2018, 10:24

Non, malheureusement, il n'y a rien a gagner sur les informations de debug, elles sont bien enlevees (j'ai fait le objdump sur un fichier elf non strippe que je n'utilise pas). Le script pour realiser le fichier khicas.g3a est le suivant:
Code: Tout sélectionner
make khicas
sh3eb-elf-g++ -s -nostdlib -fno-exceptions -Os -mb -m4a-nofpu -mhitachi dConsole.o main.o history.o *GUI*.o catalogfr.o *Provider*.o kdisplay.o -lgiac -Tprizm.ld  -Wl,-static -Wl,--gc-sections -L.  -ltommath -lustl -lm -lc -lgcc -o test.bin && truncate -s +3 test.bin && mkg3a -n basic:Khicas -n internal:KHICAS -i uns:khicasiouns.png -i sel:khicasio.png test.bin /shared/PrizmSDK-0.3/khicas.g3a # -fno-zero-initialized-in-bss

Les particularites de linkage sont plutot dues au fait que les commandes giac sont des objets de type giac::gen (comme les entiers, les fractions, les expressions, etc.), le type gen de giac contient un champ de donnee sur 4 octets qui est un pointeur (dont le bit de poids faible peut etre modifie pour indiquer que la commande doit quoter ses arguments), ce champ de donnee est inclus dans une union anonyme qui peut contenir aussi un int ou un morceau de double. De plus j'ai fait en sorte qu'il n'y ait aucune initialisation statique d'objets de type gen, donc les gen contenant les commandes builtin ont leur valeur fixee en ROM. Autrement dit il y a des transtypages permanents. Je pense que tout ca a beaucoup de chances de mal se comporter si on decoupe giac en plusieurs morceaux.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude Lephe » 04 Juil 2018, 10:45

parisse a écrit:Non, malheureusement, il n'y a rien a gagner sur les informations de debug, elles sont bien enlevees (j'ai fait le objdump sur un fichier elf non strippe que je n'utilise pas).

Dommage, ça paraissait alléchant. Mais quelle est la partie du script qui strippe, justement ? Pour ce que j'en comprends actuellement :

- Les fichiers objets ne sont pas strippés (sinon ton ELF de test n'aurait pas de sections de debug)
- Le linker script ne mentionne pas les sections, il les conserve donc
- mkg3a est bien incapable de strip une fois que le format est devenu binaire

Par ailleurs à quoi sert le make khicas ? À comparer avec le Makefile, la ligne qui suit semble faire la même opération avec un fichier différent. Désolé pour toutes ces questions, mais je dois avouer que je suis un peu confus.

parisse a écrit:De plus j'ai fait en sorte qu'il n'y ait aucune initialisation statique d'objets de type gen, donc les gen contenant les commandes builtin ont leur valeur fixee en ROM. Autrement dit il y a des transtypages permanents. Je pense que tout ca a beaucoup de chances de mal se comporter si on decoupe giac en plusieurs morceaux.

Si c'est le linker qui fixe la position en ROM alors c'est sauvable, mais c'est compliqué oui... :?
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude parisse » 04 Juil 2018, 11:37

C'est l'option -s de g++ qui strippe.
Je ne sais plus trop pourquoi j'ai fait un script en plus de Makefile, probablement pour tester des flags de compilation. En tout cas, le fichier genere par le script est un peu plus petit en taille (quelques centaines d'octets) et il affiche les icones correctement, donc comme ca marche, je n'y touche plus.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude parisse » 04 Juil 2018, 11:51

Sinon, est-ce qu'un heureux possesseur de Casio Graph 90+e peut me confirmer que la version actuelle de l'add-in fonctionne sur la calculatrice? Je n'ai pas recu de calculatrice de la part de Casio pour le moment, donc je ne peux pas tester moi-meme.
Ce serait bien de tester l'affichage 2-d, avec par exemple
1/(x^4-1) => *
1/(x^4-1)^2 => integrate
(=> se fait avec la touche "sto", integrate par shift-F3 ou via le catalog)
et les graphes avec par exemple
plot(sin(x))
plot(ln(x),x,0,5)
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude critor » 04 Juil 2018, 12:08

Si c'est toujours https://www-fourier.ujf-grenoble.fr/~pa ... khicas.g3a , oui ça semble toujours marcher, avec l'affichage 2D en prime. :bj:
Et j'aime bien l'icône d'add-in que je n'avais pas à mon dernier essai. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41496
Images: 14632
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude Lephe » 04 Juil 2018, 12:34

parisse a écrit:C'est l'option -s de g++ qui strippe.

Je ne savais pas ça, merci. Le manuel ne me laissait pas entendre ça, mais après test ça marche bien. Désolé pour le bruit, et encore une fois espérons que la taille maximale des add-ins finira par augmenter.
Dernière édition par Lephe le 04 Juil 2018, 13:19, édité 1 fois.
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: KhiCAS: rajoute CAS + Python sur ta Graph 90+E

Message non lude parisse » 04 Juil 2018, 13:13

critor a écrit:Si c'est toujours https://www-fourier.ujf-grenoble.fr/~pa ... khicas.g3a , oui ça semble toujours marcher, avec l'affichage 2D en prime. :bj:

Merci! Les graphes marchent aussi? Lors de mes premiers essais sur l'emulateur, le premier graphe marchait mais les suivants bloquaient. En desactivant l'affichage des ticks, le probleme a disparu, mais je ne sais pas pourquoi et du coup je ne suis pas sur que le probleme n'apparaisse pas sur la vraie calculatrice.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers News Casio

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 42 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.
1266 utilisateurs:
>1247 invités
>14 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)