π
<-

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

Online

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

Unread postby parisse » 04 Jul 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: Select all
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
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86.1%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby Lephe » 04 Jul 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 ?
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

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

Unread postby Lionel Debroux » 04 Jul 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.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Online

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

Unread postby parisse » 04 Jul 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: Select all
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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86.1%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby Lephe » 04 Jul 2018, 10:45

parisse wrote: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 wrote: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... :?
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Online

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

Unread postby parisse » 04 Jul 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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86.1%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Online

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

Unread postby parisse » 04 Jul 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)
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86.1%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby critor » 04 Jul 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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48.1%
 
Posts: 41987
Images: 15892
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

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

Unread postby Lephe » 04 Jul 2018, 12:34

parisse wrote: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.
Last edited by Lephe on 04 Jul 2018, 13:19, edited 1 time in total.
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Online

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

Unread postby parisse » 04 Jul 2018, 13:13

critor wrote: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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86.1%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

PreviousNext

Return to News Casio

Who is online

Users browsing this forum: ClaudeBot [spider] and 9 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
895 utilisateurs:
>856 invités
>33 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)