30

Kevin Kofler :
Pas vraiment. L'entrée dans la table de relogements prend aussi de la place. C'est 6 octets en OPTIMIZE_ROM_CALLS contre 8 (ou 12 pour le premier appel) en kernel.
Ah oui, j'avais oublié ce détail.
Mais si tu veux absolument le système de relogements, tu pourras aussi l'avoir sans kernel avec TIGCC 0.95.
Quelque chose m'échappe alors. Comment se feront les relogements sans kernel ? Vous ne pouvez pas utiliser EX_PAtch pour ça je pense.
Sauf que je parlais de la facilité de programmation, pas de la qualité du code produit.
OK, autant pour moi

31

jackiechan
:
Kevin Kofler :
Mais si tu veux absolument le système de relogements, tu pourras aussi l'avoir sans kernel avec TIGCC 0.95.
Quelque chose m'échappe alors. Comment se feront les relogements sans kernel ? Vous ne pouvez pas utiliser EX_PAtch pour ça je pense.

Code de démarrage. smile
Et évidemment que c'est en option, pas obligatoire!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

32

Argh :/
Ça va alourdir un max si on se retrouve avec des mini-kernels dans chaque prog.
si on veut utiliser ce genre de spécificités, je me demande si cen'est pas mieux de coder directement en kernel.

33

bah de toute façon avec TIGCC 0.95 c'est deja le cas apparemment... ya un petit kernel au début de chaque programme, qui s'occupe de reloger, gerer le BSS, etc... comme dirait Zeljko, "it seems that nostub mode gets more and more stub..." grin
So much code to write, so little time.

34

Le code de relogement prend 50-250 octets selon les options (relogements non-redondants (le format AMS étant redondant pour éviter le dérelogement)? BSS? ROM_CALLs par relogement? relogements compressés (qui nécessitent une routine de décompression, évidemment)?). Le header+stub kernel prend 50-100 octets. Le kernel prend au moins 3 KO. Faites vos calculs...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

35

C'est marrant quand même que tu critiques autant le kernel, mais que tu sautes quand même sur l'occasion d'élargir le _nostub à quelques fonctionnalités du kernel.

36

Kevin Kofler :
Le code de relogement prend 50-250 octets selon les options (relogements non-redondants (le format AMS étant redondant pour éviter le dérelogement)? BSS? ROM_CALLs par relogement? relogements compressés (qui nécessitent une routine de décompression, évidemment)?). Le header+stub kernel prend 50-100 octets. Le kernel prend au moins 3 KO. Faites vos calculs...
Bah c'est toujours la même question...
Au moins dans le kernel on a une seule fois ce code.
Ça évite de dupliquer tout ce start-up code das chaque programme qui l'utilise.
Mais ça peut donner du code inutilisé.
Où est la perte de place là-dedans ?
Et puis le kernel permet plus de choses que ces relogements, ce qui justifie sa taille.

37

jackiechan
: C'est marrant quand même que tu critiques autant le kernel, mais que tu sautes quand même sur l'occasion d'élargir le _nostub à quelques fonctionnalités du kernel.

1. C'est Sebastian qui a fait presque tout le travail. (J'ai rajouté les relogements compressés et c'est tout.) C'est son idée, pas la mienne.
2. On a besoin d'un système de relogement personnalisé pour gérer les BSS.
3. Comme on a déjà fait le système de relogement pour les BSS, autant en profiter pour gérer les relogements personnalisés (non-redondants).
4. Notre linker n'est pas le premier à le faire, cf. mlink.
5. Tout est en option. Normalement, seul le relogement des BSS est utilisé, et ça aussi, ça peut être désactivé (-mno-bss).
6. Si on a mis les relogements personnalisés, c'est parce que ça apporte souvent des gains de place concrets! (Pour les ROM_CALLs pas vraiment, mais comme déjà dit: si le système est là, autant permettre son utilisation pour tout ce que le programmeur utilisant notre linker désire.)
jackiechan
:
Kevin Kofler :
Le code de relogement prend 50-250 octets selon les options (relogements non-redondants (le format AMS étant redondant pour éviter le dérelogement)? BSS? ROM_CALLs par relogement? relogements compressés (qui nécessitent une routine de décompression, évidemment)?). Le header+stub kernel prend 50-100 octets. Le kernel prend au moins 3 KO. Faites vos calculs...
Bah c'est toujours la même question... Au moins dans le kernel on a une seule fois ce code.

As-tu lu ce que tu cites???
Ce qui est copié dans chaque programme kernel (header + stub) prend autant ou presque autant de place que notre code de relogement!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

38

Kevin Kofler
: 1. C'est Sebastian qui a fait presque tout le travail. (J'ai rajouté les relogements compressés et c'est tout.) C'est son idée, pas la mienne.
OK, mais avoue que tu ne craches pas sur son travail, tu es très content que TIGCC0.95 permette certaines fonctionnalités du kernel. Tu en parles sur le forum dès que tu peux.
2. On a besoin d'un système de relogement personnalisé pour gérer les BSS. 3. Comme on a déjà fait le système de relogement pour les BSS, autant en profiter pour gérer les relogements personnalisés (non-redondants).
Hum, je ne comprends pas très bien. Pourquoi vous aviez besoin de gérer les BSS ?
Et à partir de là, où est le rapport à avec les relogements personnalisés ?
6. Si on a mis les relogements personnalisés, c'est parce que ça apporte souvent des gains de place concrets!
Je suis d'accord smile
As-tu lu ce que tu cites???
Ce qui est copié dans chaque programme kernel (header + stub) prend autant ou presque autant de place que notre code de relogement!
Oui, mais le code de relogement, lui on ne l'aura qu'une seule fois avec le kernel.
Enfin en effet, les différences de tailles ne sont pas énormes (voire très petites finalement), donc ça ne pose pas vraiment de problème...

39

> C'est marrant quand même que tu critiques autant le kernel, mais que tu sautes quand même sur l'occasion d'élargir le _nostub à quelques fonctionnalités du kernel.

Pour bien mettre les choses au point (ça aurait été pareil avec n'importe qui, dommage que ça soit toi): LE KERNEL N'A PAS QUE DES INCONVENIENTS ! IL Y A DE BONNES IDEES DEDANS !
Ca n'est quand même pas la première fois que je le dis, je l'ai dit sur notre forum aussi.

Un gros inconvénient est la place prise par le kernel lui-même, toutes ses librairies, le poids du passé, que n'a pas le _nostub... Et rien de ce qui n'est faisable en kernel n'est infaisable en _nostub, des choses sont infaisables en kernel mais faisables en _nostub.

En _nostub, on a du code redondant, mais on se passe de programme additionnel (si le programme est compressé, un launcher est créé, il suffit de lancer le launcher spécifique ou le launcher générique - l'argument selon lequel il faut un programme additionnel n'est pas valable).
Si on fait un truc non natif mais utile / pouvant être utile notamment pour diminuer la taille (SAVE_SCREEN, EXIT_SUPPORT, table de relocations compressées, peut-être tables de relocation kernel, mais en revanche pas vraiment à mon avis les BSS, dont la facilité d'utilisation est là pour cacher une certaine paresse - il est trivial de tout faire soi-même), on l'implémente dans le programme.

Le shared-code en _nostub serait possible pour certains trucs, mais il faudrait que tous les auteurs de programmes l'utilisent - ce qui est loin d'être gagné. Et puis, ça va créer des problèmes qu'on n'a pas avec des libs statiques:
* perte de place, même en restreignant au maximum les fonctions - restriction du nombre des fonctions qui ferait inévitablement des jaloux qui ne manqueraient pas de se plaindre parce que leur truc n'y est pas, etc.
* problèmes d'update: vieilles versions qui traînent, incompatibilités des nouvelles versions avec les anciennes s'il a fallu changer de façon imprévue un truc important - ceci est évité par une modification et recompilation du programme. Que se serait-il passé si Complib avait été en lib dynamique, et que le bug ait été vu après qu'elle ait été utilisée à grande échelle ?
* nécessité d'avoir un programme additionnel pour faire marcher un programme _nostub même simple et pas trop gros, ça n'est pas bien...

Les libs dynamiques ont elles aussi des avantages, il y a des fois où on ne peut faire sans (FAT-Engine notamment, et le contournement de la limite des 64 KB).

Le shared-code est possible avec les FlashApps (un programme ASM doit bien pouvoir s'en servir ?), mais disponible seulement sous AMS 2.xx...


[EDIT: j'ai mis un long moment à écrire ce post, je n'avais pas vu le post de jackiechan.]
[EDIT2: il faudrait aussi se mettre d'accord sur ce qu'on appelle _nostub. Si on appelle _nostub tout programme qui rentre directement sur _main, dans ce cas-là, ça fait très longtemps qu'il n'y a presque plus de _nostub... En revanche, si le _nostub est tout ce qui tourne sans kernel, alors il y en a énormément.]
[EDIT3: le but de ce post n'est pas de lancer un débat kernel/_nostub].
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

40

jackiechan
:
2. On a besoin d'un système de relogement personnalisé pour gérer les BSS. 3. Comme on a déjà fait le système de relogement pour les BSS, autant en profiter pour gérer les relogements personnalisés (non-redondants).
Hum, je ne comprends pas très bien. Pourquoi vous aviez besoin de gérer les BSS ?

Parce que plusieurs personnes nous le demandent. smile
Si tu n'en veux pas, utilise -mno-bss.
Et à partir de là, où est le rapport à avec les relogements personnalisés ?

Parce qu'il faut bien reloger les références vers la section BSS... Le code pour relogements personnalisés et BSS est presque le même.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

41

Le fait que ce soit par défaut, fait que ça nous rajoute du start-up code même si on n'utilise pas de section BSS ?

42

S'il n'y a vraiment pas de section BSS, non. (Notre linker n'est pas stupide à ce point!) Mais s'il y a une section BSS de quelques octets (ce qui est facilement possible parce que GCC 3.3 met automatiquement tout ce qui est global/statique et initialisé à 0 dans la section BSS sauf si tu utilises -fno-zero-initialized-in-bss), oui. sad Donc pour être sûr, il vaut mieux utiliser -mno-bss (ou au moins -fno-zero-initialized-in-bss, mais c'est moins sûr).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

43

OK, bah c'est plutôt bien en fait. Je n'avais pas pensé au fait que les var globales seraient en sections BSS automatiquement.
Pourquoi 'sad' ?

44

Parce que si ce ne sont que quelques octets, le code d'allocation/relogement prend plus de place que le prendraient les variables. sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

45

Ah, vous ne pouvez pas fixer un seuil à dépasser en taille pour que ce soit utilisé dans des BSS ?

46

C'est carrément dans le domaine du compliqué là. grin
À toi de voir si c'est mieux avec ou sans.
Surtout que si on ne veut pas de BSS, il vaut mieux que le compilateur soit au courant pour qu'il mette les données avec le code, ce qui permet des références PC-relatives dans plus de cas.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

47

D'ailleurs, je ne comprends pas pourquoi on ne peut pas faire de références PC-relative avec des BSS, puisqu'au moment du relogement, on sait à quelle adresse est située on doit faire la référence (donc la valeur du PC) et on sait à quelle adresse on fait référence donc on peut faire la différence des deux non ?

48

Les offsets PC-relatifs sont de 2 octets, donc limités à -32768 ... 32767.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

49

Et puis ton idée demanderait quand-même un relogement, alors que tout l'intérêt du PC-relatif est d'éviter le relogement.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

50

OK, merci.

Pour l'intérêt du PC-relatif, personnellement, si je l'utilise, ce n'est pas seulement pour éviter un relogement, mais c'est que ce mode d'adressage est plus rapide que l'adressage absolu long (et plus petit).

51

Mais c'est le cas exactement parce que c'est limité à ±3276[78].
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

52

Veuillez m'excuser de revenir au sujet initial du topic grin

Maintenant, ça compile.
Mais il reste quelques ptits problèmes :

1. Quand je veux compiler sur TIGCC, il me met "assembler not found" ou "unable to find assembler", un truc du genre.
C'est bête, TIGCC ne me déplairait pas


2. Quand je fais un prog:
xdef _main
xdef _ti89
_main
end
Le prog se compile pas, il me met undefined symbole sous le '_' du xdef _ti89, et pourtant je compile avec -g -t


3. Quand je fais un prog tout bête du genre:

include "tios.h"
include "util.h"

xdef _main
xdef _ti89

_main
xxx
xxx
xxx
xxx
xxx
xxx (je mets des données dans la pile pour afficher un texte avec le TIOS (tout ça pris sur un exemple)

jsr util::idle_loop

end

La compilation se passe correctement, ça passe bien sur calc ou VTI, mais dans les deux, le texte s'affiche, mais à la fin le kernel (PreOS 0.67) me fait un "crash intercepted", un hot reset quoi. Et pourtant j'ai bien recopié l'exemple pris dans un tuto quelconque.


Aidez-moi ya quand même des trucs que je comprends pas wink

53

2. Tu mets quand même un include "tios.h" ? Tu assembles avec quoi ?
3. Il faut le code entier, ou bien plus d'infos sur le crash. Penses-tu à restaurer la pile après l'appel du ROM_CALL ?

54

2. non, c'est vrai, je ne met pas d'include "tios.h", vu que je ne fait aucun appel au header, mais peur-être le faut-il ???? je vais essayer.

3. Le code, je l'ai pompé directement sur un exemple d'un tuto.
Le crash il n'y en a pas, j'ai juste le "crash intercepted" de PreOS dans la status line.
Quant à la pile, oui, je la restaure.
Et à la fin du prog, tout remarche normalement, sauf que j'ai perdu 200 octets à cause du hot-reset

55

Si tu veut programmer en kernel il faut que tu inlus tios.h dans ton projet ou en nostub tu doit inclure os.h. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

56

3.Oui, mais il faut plus d'infos sur le type crash, bien qu'il ait été intercepté c'est un crash.
Et il nous faut ton code complet si tu veux qu'on t'aide.

57

ok merci vous devez vous marrez en lisant mes posts grin

Sinon personne ne peut m'aider pour TIGCC (cf alinéa 1 post pastis)

Je met mon code complet demain matin chez mon patron, car là je suis au cyber et mon code est chez moi lol

58

tu l'as installé comment tigcc ?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

59

Pour la première question, je ne sais pas, c'est bizarre. Tu essaies de compiler à partir de l'IDE ?

60

mon frangin me l'a gravé sur cd, mais c'est pas le zip qu'il m'a passé, du coup je suis sur de rien.
pourtant tout s'est bien passé à l'installation, mais je répète, je pense que le pb vient de là. je vais graver le zip d'origine et tout réinstaller