π
<-
Chat plein-écran
[^]

Script qui refuse de s’exécuter sur la Numworks N0100

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby cent20 » 08 Sep 2019, 11:51

Lionel Debroux wrote:Puisque l'utilisation d'un tas Python de 32 KB change le comportement... allons un peu plus loin ?
En pièce jointe, un build avec un tas de 40 KB


Jusque là j'ai tout compris !

Lionel Debroux wrote:et un nombre maximum de noeuds réduit (3/4 de la valeur d'origine mentionnée plus haut, et sizeof(TreeNode) == 12, donc ça laisse 2048 noeuds). Comme le deuxième changement réduit davantage la RAM consommée que le premier ne l'augmente, le tas pour malloc (section .heap) est plus grand, 0xEB64 octets maintenant.
Je me demande si on ne pourrait pas réduire la taille de la pile (section .stack), aussi... sauf utilisation de grosses variables locales, 32 KB (0x7FF8) est élevé alors que le tas ne fait même pas le double de ça.

sizeof(TreeNode) == 12 parce qu'il y a deux int16_t et un int8_t, et un pointeur vers la vtable, donc du padding. De toute façon, la taille doit être multiple de 4 pour faciliter les copies mémoire, c'est également marqué en commentaire.


:#fou#:

J'ai tout compris, bien évidemment. ;)

Quelques questions en rapport avec le .bin :


Tu le génère depuis une machine sous quel OS ?
Tu fais comment pour attraper le .bin ?
Le mien sous debian 10 avec interface graphique (on ne rigole pas) s'efface immédiatement après l'echec du flashage, car il serait trop gros pour être envoyé (forcement 8mo>1mo), bon après aussi je ne savais pas qu'il avait été généré par défaut pour la N0110, ce n'est pas marqué dans la doc ni qu'il faut rajouter des paramètres pour compiler :#roll#: )
Bonjour Anonymous !

Intéressé par la spécialité NSI en 1ère
?
Visite donc
https://nsi.xyz !
User avatar
cent20Généreux
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 51%
 
Posts: 307
Images: 24
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):

Online

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby jean-baptiste boric » 08 Sep 2019, 12:12

Lionel Debroux wrote:Je me demande si on ne pourrait pas réduire la taille de la pile (section .stack), aussi... sauf utilisation de grosses variables locales, 32 KB (0x7FF8) est élevé alors que le tas ne fait même pas le double de ça.


Je n'ai pas étudié la question en détail, mais le DFU de NumWorks s'exécute dans le bas de la pile afin de pouvoir mettre à jour le firmware sans scier sa propre branche au passage. Un autre cas qui me vient en tête est la décompression des images avec un buffer d'environ 8 KiB sur la pile (image_view.cpp).
User avatar
jean-baptiste boricPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 53.1%
 
Posts: 297
Joined: 21 Dec 2015, 22:22
Gender: Not specified
GitHub: boricj

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby parisse » 08 Sep 2019, 12:16

Prudence quand meme avec la stack, il peut y avoir des alloca.
Reste quand meme qu'etre oblige d'optimiser la taille d'un script est peut-etre pas ideal d'un point de vue pedagogique...
User avatar
parisseVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 90.5%
 
Posts: 1907
Joined: 13 Dec 2013, 16:35
Gender: Not specified

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby Lionel Debroux » 08 Sep 2019, 12:29

Tu le génère depuis une machine sous quel OS ?

Debian sid/unstable amd64, dont le gros deviendra Debian 11 dans plus de 2 ans. Debian 10 va très bien pour faire ce que tu veux. Moi aussi, j'ai une interface graphique :)

Tu fais comment pour attraper le .bin ?

Depuis la racine du clone d'epsilon:
Code: Select all
make MODEL=n0100
make build/device/n0100/epsilon.bin

et je récupère ce dernier fichier pour l'uploader ici.

Quant à l'usage de la pile: tout à l'heure, j'ai justement ajouté -Wstack-usage=512 -Wframe-larger-than=512 dans CXXFLAGS de scripts/default.mak, et j'ai eu zéro warnings. Mais ça m'étonne, moi aussi... le buffer de 8000 octets dans image_view.cpp aurait dû être reporté, en effet.
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: 5.9%
 
Posts: 6444
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
Class: -
GitHub: debrouxl

Online

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby critor » 08 Sep 2019, 13:53

Voilà, l'exploit est annoncé en page d'accueil, vu qu'il change la donne en cette période de rentrée/acquisitions :
viewtopic.php?p=245130#p245130

J'ai normalement crédité tous les acteurs, dites-moi si il y a des modifications à apporter.

Merci.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 3.7%
 
Posts: 34989
Images: 9340
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby cent20 » 08 Sep 2019, 14:59

Lionel Debroux wrote:
Depuis la racine du clone d'epsilon:
Code: Select all
make MODEL=n0100
make build/device/n0100/epsilon.bin

et je récupère ce dernier fichier pour l'uploader ici.



Merci beaucoup. Avec ça je peux compiler directement dans ma machine virtuelle et distribuer les .bin aux élèves. ça suffira pour commencer. Surtout que mes élèves en 1ère NSI auront cette année une TI 83 prenium sans python ni le module externe :whistle: , alors eux les .bin ils s'en moqueront totalement et le python on le fera sur PC mais ça sera moins ludique ...
Bonjour Anonymous !

Intéressé par la spécialité NSI en 1ère
?
Visite donc
https://nsi.xyz !
User avatar
cent20Généreux
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 51%
 
Posts: 307
Images: 24
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):

Re: Script qui refuse de s’exécuter sur la Numworks N0100

Unread postby cent20 » 26 Feb 2020, 22:46

Je profite du lancement d'un démineur, , un petit script de 3.09ko qui refuse de tourner sur les 16ko pour relancer ce topic.

Depuis le 8 septembre dernier, 5 mois ce sont écoulés nous avons bien progressé à python.
(nous étions parti de 0 en juillet 2019 !)

Et du coup le script de 6ko que l'on pensait incompressible fait désormais 4,00ko, il est ici : https://workshop.numworks.com/python/cent20/polynome et il refuse de tourner sur la version de Epsilon et son tas python de 16ko.

On a réussit à le réduire de 30% depuis les 6ko sans enlever de fonctionnalités essentielles. Mais rien à faire, sur Epsilon ça ne veut pas tourner.

Il tourne très bien sur Omega par contre, et le Pull Request de Lionel Debroux sur GitHub est le PR le plus populaire...

Et je n'ai pas encore crée un DM demandant à mes élèves de poster un commentaire sous ce PR, ni de cliquer sur les coeurs, ça c'est prévu pour septembre 2020.
Bonjour Anonymous !

Intéressé par la spécialité NSI en 1ère
?
Visite donc
https://nsi.xyz !
User avatar
cent20Généreux
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 51%
 
Posts: 307
Images: 24
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):

Previous

Return to Programmation Python

Who is online

Users browsing this forum: No registered users and 0 guests

-
Search
-
Featured topics
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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 
-
Stats.
509 utilisateurs:
>499 invités
>4 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)