30

Il existe une version traduite de la doc de TIGCC, mais elle n'est hélas plus vraiment à jour, enfin, la voici quand même : http://sourceforge.net/projects/tigcctrans/

Sinon, pour débuter, lis le tuto de squale92 sur ti-fr, tu connaîtras quelques trucs importants à savoir pour programmer sur TI et tu peux chercher des Tutos sur le C à cette adresse : http://www.codeur.org

31

Bon, la bêta 14 est sortie. Et avant que vous m'envoyez 10000 bug reports:
[glow]attention ON NE PEUT PAS COMPILER DES PROGRAMMES POUR KERNEL UTILISANT DES FONCTIONS DE [i]TIGCCLIB[/I] AVEC LA BÊTA 14!!! attention[/glow]
Désolé, il faudra attendre au moins 3 jours pour une bêta qui le corrige, parce que Sebastian ne sera contactable les 2 jours qui viennent.
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

Je viens de sortir une mise à jour pour corriger ce problème.
http://tigcc.ticalc.org/beta/update.zip
Remplacez tigcc.a, tipatch.lib et nostub.h par les fichiers du ZIP.
Ça corrige le bogue mentionné ci-dessus, et ça diminue la taille des programmes _nostub en évitant de gaspiller 2 octets sur le symbole _nostub (j'ai mis un xdef dans tipatch.lib à la place).

(Sebastian a changé quelques trucs dans la mise à jour, mais ses changements sont inutiles, donc si vous l'avez déjà, pas la peine de retélécharger la mise à jour. Et pas la peine de télécharger la bêta 15 non plus si vous avec la bêta 14 et la mise à jour: la bêta 15 est juste la bêta 14 avec la mise à jour de Sebastian.)
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é

33

codeur.org je connais, commage qu'il ne mette pas souvent ses liens a jour, une bonne partie sont morts.
J'ai fini le tuto de squale92, dnoc je cherche des infos supp.
tigcc en francais, ce n'est pas vraiment a quoi je m'attendais. Cest pour quelle version aussi !
au fait merci
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

34

Bon, maintenant Sebastian a sorti une mise à jour qui corrige le problème des programmes pour kernel.
Et il paraît que le problème de la taille des programmes _nostub n'en était pas un: Obj2ti est déjà suffisamment intelligent pour se rendre compte du fait qu'il ne doit pas réserver 2 octets pour le symbole _nostub.

Donc, la bêta 15 corrige bien tous les problèmes.
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

Comment obj2ti pourrait savoir que ces 2 octets ne sont pas utiliser autre part ?
Et puis on pourrait reserver un char/long.
Ou faire dans main

// Sauvegarde
_nostub = i;
...
i = _nostub;

C'est hyper sale, certes, mais un linkeur ne peut pas et ne doit pas changer ce que contient les fichiers objets.

36

C'est peut-être parce que les BSS ne sont pas permis en _nostub. (Je ne sais pas ce que fait exactement Obj2ti avec les BSS en _nostub.)
GCC n'auto-initialise pas les variables globales commençant par un _ .
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é

37

obj2ti alloue de l'espace memoire et ajoute cet espace au code pour les bss (Bref il les initialise a 0).
Mais je ne vois pas du tout le truc comme quoi il efface la declaration de _nostub. Ou as-tu vu ca ?

38

C'est d'áilleurs la partie la plus claire de obj2ti. Parce que la lecture COFF #sic#
Je suis quasi sur qu'il n'efface pas le symbol _nostub.

39

Il le met où alors? Parce qu'il n'est certainement pas dans l'exécutable. (J'ai vérifié avec ttdasm.)
Si je fais un programme _nostub avec juste un _main vide, il y a juste le code, puis le 00 00 pour marquer le début de la table de relogements, puis $F3 (ASM_TAG).
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é

40

Je vais tester de mon cote. Ca m'intrigue ca....
Moi je parle des programmes C, parce qu'en asm, c'est tout a fait normal que ca fasse ca. On export juste nostub, et on ne fait aucune reservation de place.

41

Au fait, si vous avez la mise à jour de hier nuit, retéléchargez quand-même le update.zip modifié par Sebastian. Je viens de me rendre compte qu'avec mes modifications, il pourrait y avoir des problèmes avec l'initialisation automatique des variables globales effectuées par GCC, ce qui donnera des références absolues au lieu de PC-relatives pour les variables globales non-initialisées en _nostub.
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é

42

meowcat> si tu as fini mon tuto, c'est maintenant par toi-même que tu dois progresser.
(ou plutôt, c'est de toi que viendra la principale progression)

(du moins, c'est ainsi que j'ai vu les choses, et c'est pour cela que je n'ai pas rajoute gd chose depuis pas mal de temps)
(cela sous-entends que tu aie parfaitement saisi ce que propose le tuto)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

43

PpHd a écrit :
Je vais tester de mon cote. Ca m'intrigue ca.... Moi je parle des programmes C, parce qu'en asm, c'est tout a fait normal que ca fasse ca. On export juste nostub, et on ne fait aucune reservation de place.

J'ai essayé ça:
#define USE_TI89              // Compile for TI-89
#define USE_TI92PLUS          // Compile for TI-92 Plus
#define USE_V200              // Compile for V200

#define MIN_AMS 100           // Compile for AMS 1.00 or higher

#define NO_CALC_DETECT
#define NO_EXIT_SUPPORT

#include <tigcclib.h>         // Include All Header Files

// Main Function
void _main(void)
{
	// Place your code here.
}

Il y a bien un .comm _nostub,2 dans le fichier .s, mais je ne retrouve nulle part les 2 octets dans les 89z et 9xz.
J'ai même essayé de mettre .comm _nostub,1000 à la place, pas un seul octet de plus. Un rajout de .comm test,1000 ne change rien non plus.
En d'autres mots: Obj2ti ne gère pas du tout les commons en _nostub. Heureusement que notre GCC auto-initialise les variables globales en mode _nostub (mais pas celles commençant par un _). Attention, mon update.zip de hier soir était bogué parce que l'auto-initialisation ne marche plus si on ne définit pas _nostub dans chaque fichier! Utilisez celui de Sebastian de ce matin, ou la bêta 15.
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é

44

Voici ma source C : // C Source File // Created 08/04/02; 17:05:51 #define USE_TI89              // Compile for TI-89 #define USE_TI92PLUS        #define USE_V200              // Compile for V200 #define MIN_AMS 100    #define NO_CALC_DETECT #define NO_AMS_CHECK #define NO_EXIT_SUPPORT #include <tigcclib.h>         // Main Function void _main(void) { }

Et le programme asm genere :

- bra.w +2 // Super, mais je sais pas comment l'enlever
- rts
- dc.w 0 <- var _nostub
- dc.w 0
- $F3

On voit clairement la presence de _nostub (c'est la beta 12 que j'ai utilise)

45

Bizarre, ça ne fait pas ça chez moi. Peut-être un problème avec AS?
Je vais voir ce que ça donne en mode kernel.
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é

46

En effet, il n'y a plus du tout de BSS!
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

Gros problemes en vue ! sad

48

Je n'ai pas réussi à identifier le programme qui est la cause du problème. AS ne l'est pas en tout 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é

49

J'ai compris: Ce n'est pas du tout un bogue! AS ou LD (je ne sais pas lequel) ignore tout simplement tous les .comm qui ne sont pas référencés. Si on utilise les .comm quelque part dans le programme, ils sont mis dans le programme sans problèmes.
Reste à savoir pourquoi il te réserve la place pour le .comm _nostub,2 chez toi et pas chez moi. L'as-tu utilisé quelque part (_nostub=1 ou un truc du genre)?
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

Je n'ai fait que compiler la source plus haut. Le var _nostub, ce n'est qu'une conjecture. Sinon que serait ces 2 octets qui trainent ? Et je rappelle que j'ai utilise la beta 12.
>AS ou LD (je ne sais pas lequel) ignore tout simplement tous les .comm qui ne sont pas référencés. Si on utilise les .comm quelque part dans le programme, ils sont mis dans le programme sans problèmes.
Normalement ca devrait etre le linkeur (As ne peut pas le savoir - access possible par d'autres fichiers), mais un linkeur n'est pas cense optimise ce genre de truc. Enfin a mon avis.

Je vais examiner plus en details.

51

voici la source produit par gcc :      .file     "Newfile.c" #NO_APP      .data tigcc_compiled.: #APP /* Main Startup Code */      .even      jra _main      .even #NO_APP #APP      .xdef _ti89      .xdef _ti92plus      /* Include Patch: _dont_detect_calc_ */      /* Include Patch: _MIN_AMS_not_required_ */      /* Include Patch: nostub_patch */      /* Include Patch: no_retval */      /* Include Patch: simple_main */      .set MT_TEXT,0x8000      .set MT_XREF,0x9000      .set MT_ICON,0xA000      .set MT_CASCADE,0x4000 #NO_APP      .data      .even      .globl     _main _main: #APP #NO_APP      rts .comm _nostub,2
Au fait pkoi le code a quand meme comme indication section data ?

52

Pour qu'il puisse accéder aux variables globales en PC-relatif. Les sections seront de toute façon mises ensemble (il n'y a qu'une section code/données dans les formats _nostub et DoorsOS), donc autant le faire tout de suite vu que ça permet des optimisations. Et je ne comprends pas pourquoi le symbole est exporté chez toi et pas chez moi (vu que tu dis que c'est la même chose avec la bêta 15).
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é

53

>- bra.w +2 // Super, mais je sais pas comment l'enlever

Moi non plus. J'ai dû le faire mettre à AS dans ce cas parce qu'avant, il voulait faire un bsr.s +0 et donnait une erreur. Et vu la structure de la source de AS, c'est bien plus facile de promouvoir un branch que de l'effacer. Si tu sais comment faire pour qu'il le supprime, dis-le moi!
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é

54

Ben je compile avec -fomit-frame-pointer puis avec -O2, et j'obtines ce code. puis je regarde sous Vti ce que ca donne.
De toute facon, le bra.w n'est pas bien grave, et est generalement utile.

55

Kevin Kofler a écrit :
Donc:
- La version officielle de GCC 3.1 est sortie, mais il n'y a pas encore d'annonce officielle.
- Quant à nous, la prochaine bêta de TIGCC 0.94 sortira ce soir. Elle contiendra GCC 3.1 en version officielle, un AS qui ne plante pas, des routines de division, modulo et shift de long longs, des ROM_CALLs documentés en plus, ...


J'ai pris note. J'espère updater la version Linux pour ce WE...
Romain Liévin aka 'roms'
"Linux, y'a moins bien mais c'est plus cher !"

56

PpHd a écrit :
Ben je compile avec -fomit-frame-pointer puis avec -O2, et j'obtines ce code. puis je regarde sous Vti ce que ca donne. De toute facon, le bra.w n'est pas bien grave, et est generalement utile.

Les 2 octets que tu observes ne sont que du padding. Si je remplace le .comm _nostub,2 par un .comm _nostub,1000 ou un .comm _nostub,0 dans le fichier .s et que j'assemble et linke, ça ne change rien. D'ailleurs, les 2 octets qu'il y a changent à chaque nouveau linkage, donc c'est vraiment du padding par non-sens.
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é

57

Ok. Et si on fait :

0:      .file     "Newfile.c"
1: #NO_APP
2:      .data
3: tigcc_compiled.:
4: #APP
5: /* Main Startup Code */
6:      .even
7:      jra _main
8:      .even
9: #NO_APP
10: #APP
11:      .xdef _ti89
12:      .xdef _ti92plus
13:      /* Include Patch: _dont_detect_calc_ */
14:      /* Include Patch: _MIN_AMS_not_required_ */
15:      /* Include Patch: nostub_patch */
16:      /* Include Patch: no_retval */
17:      /* Include Patch: simple_main */
18:      .set MT_TEXT,0x8000
19:      .set MT_XREF,0x9000
20:      .set MT_ICON,0xA000
21:      .set MT_CASCADE,0x4000
22: #NO_APP
23:      .data
24:      .even
25:      .globl     _main
26: _main:
27: #APP
28: #NO_APP
   move.l #4,toto
29:      rts
30: .comm _nostub,2 
31: .comm toto,4
 

? Je vais tester.

58

Là, ça prendra 4 octets de plus (pour toto). J'ai déjà essayé. Et teste avec 1000 au lieu de 4, ça se voit mieux. grin
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é

59

Au fait, pkoi _nostub est la seule variable declare en .comm ? Toutes les autres sont en .gobl ?

60

Parce que:
- on avait mis ça dans GCC pour LINK.EXE qui ne gérait pas du tout les BSS en _nostub.
- on a gardé ça pour Obj2ti parce que ça permet d'accéder aux variables globales non initialisées en PC-relatif (elles sont en .data avec le code).

Évidemment, en mode kernel, GCC génère des .comm pour utiliser les BSS (il décide ça à l'aide du symbole short _nostub;, c'est pour ça qu'il est en short et pas en asm("xdef _nostub") ).

Et pourquoi un traîtement spécial pour le symbole _nostub? Facile: le nom commence par un underscore. C'est ça le critère.
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é