π
<-
Chat plein-écran
[^]

iostream et STL

C, C++, ASM...

iostream et STL

Message non lude parisse » 16 Mar 2014, 19:35

Y-a-t-il du support pour les flux I/O et la standard template library C++?
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: iostream et STL

Message non lude Lionel Debroux » 16 Mar 2014, 21:49

Une partie de la STL est en effet cross-compilable pour l'OS standard des Nspire et Ndless 3.1/3.6. Je suis moins sûr pour iostream: il se peut qu'il manque des syscalls, auquel cas il faudra faire davantage de reverse-engineering et/ou ajouter des choses comme newlib.
Attention au fait que le code de startup du SDK Ndless 3.1/3.6 ne contient pas les appels pour certains constructeurs, le bug est connu et on peut imaginer qu'il sera bientôt corrigé.
Je dirais qu'il faut essayer, et voir où ça coince.

Si Prof. Bernard Parisse pose ce genre de questions, c'est peut-être que vous avez une idée particulière de portage derrière la tête ? ;)
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: iostream et STL

Message non lude Excale » 16 Mar 2014, 21:58

Lionel Debroux a écrit:Si Prof. Bernard Parisse pose ce genre de questions, c'est peut-être que vous avez une idée particulière de portage derrière la tête ? ;)


voir l'autre topic: http://tiplanet.org/forum/viewtopic.php ... 86#p159196 :)
Avatar de l’utilisateur
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 3.9%
 
Messages: 2955
Images: 3
Inscription: 10 Sep 2010, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: iostream et STL

Message non lude parisse » 17 Mar 2014, 09:59

En fait c'est un eleve de terminale S qui m'a contacte il y a 3 semaines pour me poser la question du portage de giac sur nspire. Je n'ai pas eu trop le temps de regarder, j'etais assez reserve sur les chances de succes et l'interet. Et puis en y reflechissant, je me dis que ce serait une bonne idee (en particulier pour les possesseurs de nspire non CAS, ca pourrait etre une piste pour democratiser l'acces au calcul formel sur calculatrices en tout cas). Je vais avoir un peu plus de temps a partir d'avril (parce que ca m'etonnerait que ca soit completement evident).
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: iostream et STL

Message non lude Adriweb » 17 Mar 2014, 10:26

Avoir un moteur CAS alternatif sur les Nspire (CX) CAS serait aussi une chose intéressante :D
(en fait, dans une moindre mesure, ça ne gênerait pas TI contrairement aux nspire non-CAS :P)

(Sinon, il a été question de NspireIO pour l'interface, mais Excale a déjà quelque peu réussi à interfacer (c'était un peu du hack, certes...) les lignes de saisies standards...
Autre solution probablement plus pratique/simple : rendre accessible le moteur depuis un module Lua - une interface de calcul en Lua existe déjà (cf SuperSpire de Critor). Des exemples d’interfaçage avec le Lua sont fournis avec le SDK Ndless.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: iostream et STL

Message non lude parisse » 17 Mar 2014, 15:57

Alors, voila une 1ere etape de franchie: on n'a pas les iostream, mais quelque chose de suffisamment ressemblant je pense la:
https://github.com/compujuckel/nspire-io
J'ai du corriger un petit bug dans console.cpp, au lieu de faire using namespace nio; il faut faire namespace nio { ... } en fermant l'accolade a la fin du fichier. J'ai du aussi toucher au script de link qui n'accepte pas les chemins a la Unix sous windows. Et le programme demo fonctionne.
Reste a adapter le source de giac pour utiliser cette classe.
Et ensuite voir comment faire pour la STL.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: iostream et STL

Message non lude Adriweb » 17 Mar 2014, 19:05

Nous te souhaitons une très bonne chance (et le courage et temps qui va avec :) )

Tiens nous au courant du projet :D
(Il est même possible d'ouvrir un topic d'avancement dédié, si besoin est)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: iostream et STL

Message non lude Lionel Debroux » 17 Mar 2014, 20:30

Je viens de refaire l'exercice: la toolchain compilée par le script listé à http://hackspire.unsads.com/wiki/index. ... n_on_Linux (crosstool-ng permettait également d'en créer une) est C++, et je peux construire le programme suivant:
Code: Tout sélectionner
#include "os.h"
#include < string>
#include <iostream>

int main(int argc, char * argv[]) {
    std::string str(argv[0]);
    std::cout << str << std::endl;
    return 0;
}

de la façon suivante:
Code: Tout sélectionner
nspire-g++ -Wall -W -g3 testcxx.cpp -ffreestanding -ffunction-sections -fdata-sections -Wl,--gc-sections -o testcxx -lndls

(certaines options superflues, bien sûr)

Les templates et iostreams sont donc supportables.

Après la construction, que le binaire produit fonctionne sur Nspire (nspire_emu ou machine réelle) en utilisant Ndless 3.6 est une toute autre histoire. La toolchain, et donc les binaires qu'elle produit, ne sont évidemment pas construits vis à vis des syscalls Ndless, même après ajout de -lndls.

Il faudrait refaire la manip avec une vraie toolchain bare metal, sans utiliser, par exemple, newlib.

Ce sera tout pour moi ce soir :)


EDIT: pas tout à fait, en réalité. Les toolchains bare metal sont faites principalement pour le C, et la compilation automatique de la toolchain par crosstool-ng sans newlib échoue lamentablement dans libstdc++, faute de pouvoir trouver stdio.h.
Il faut donc rester à un processus plus manuel, où on peut injecter l'environnement Ndless (qui sera certainement à étendre, c'est le cas général quand on porte un soft portable vers une plate-forme non standard dont on fait progressivement les headers; par exemple j'avais amélioré GCC4TI pour pouvoir patcher moins lourdement Lua et p14p pour fonctionner sur TI-68k/AMS) à la place de newlib, puis déclencher le build final...
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: iostream et STL

Message non lude parisse » 18 Mar 2014, 13:19

Bon, je viens d'essayer de compiler libtommath (support entiers en precision arbitraire, ecrit en C). Ca compile bien, j'arrive a linker un programme tout simple mais une fois transfere sur la TI, ca fait tout planter (reset ne marche pas, je suis oblige d'oter les piles pour relancer la TI).
Est-ce parce qu'il faut faire preceder tout include de header standard de #include<os.h>? Peut-on utiliser les header standard ou pas? Ca risque d'etre tres (trop) complique de faire un portage si on n'a aucune indication au moment de la compilation ou du link qu'on utilise quelque chose qu'il ne faut pas utiliser. Du coup je suis assez pessimiste contrairement a hier (d'autant que je me suis apercu que nspireio n'avait pas de support pour les double en C++ en tout cas...)
Edit: Bon en ajoutant #include<os.h> dans tommath.h, ca ne plante plus. Donc l'espoir revient!
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 78%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: iostream et STL

Message non lude Adriweb » 18 Mar 2014, 13:39

Je me permets une remarque quand j'ai vu "les piles" : tu as donc une ClickPad ou TouchPad ?
En fonction des besoins du programme et de l'état de la calculatrice, des "problèmes" de RAM pourraient survenir...

Sur CX, ca passerait probablement mieux si seule la RAM est un problème, au final.

Je suppose que tester sur émulateur devrait déjà alléger la tâche de débug pendant le développement, surtout côté ram.
(apres, l'émulation n'est pas 100% fiable non plus -pour certains trucs précis, dont les timers de l'arm (d'autres pourront détailler :P)-, mais c'est déjà ca...)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Suivante

Retourner vers Native: Ndless, Linux, ...

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 21 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.
1232 utilisateurs:
>1193 invités
>34 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)