60

Thibaut (./59) :
Mais si Folco biggrin.gif

Ouf, quand même grin
Thibaut (./59) :
J'ai dit HeapAlloc de mémoire

AHAHAH grin

61

Thibaut (./51) :
Je te souhaite bon courage pour définir _main au sein même de TIGCClib sans casser la compatibilité avec 100% des programmes existants smile Tu devras modifier l'éditeur des liens.

C'est là que je ne comprends pas : qu'est-ce qui empêche de faire un .h qui provoque le même hack que celui que tu as utilisé (un #define qui renomme le "main" de l'utilisateur), et un .c à coté qui contient le "vrai" main ainsi que toutes tes fonctions internes pour composer argc/argv, sauver l'écran [...], lancer le "main" de l'utilisateur puis tout restaurer et quitter ?

L'utilisateur n'aura qu'à inclure ton .h dans ses fichiers et ajouter ton .c à la compilation ; ça autorise la compilation séparée, il n'y a plus de code dans un fichier inclus, etc, ça me semble déjà bien plus propre non ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

62

full pencil

et si il veut pas faire de la compil séparée il n'a qu'a include le .c sans son propre source, ou bien un

#ifdef ALSO_INCLUDE_IMPL
#include "liblikeonpc.c"
#endif

• squalyl se sauve en courant

63

squalyl (./56) :
mais je suis pas d'accord avec ton alloc d'un nombre fixe d'arguments.

Moi non plus! sick
il est possible de faire une première passe dans l'estack pour compter les args et leur taille, faire le malloc, et parser ensuite.

Il y a même une fonction pour ça!
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é

64

Kevin, le nombre d'arguments est déjà contrôlé, c'est leur taille une fois parsée qui doit faire l'objet d'une vérification...


Zephyr : Ca compliquerait la tache du programmeur. Il devrait faire un copier-coller du .c à chaque nouveau projet et l'inclure dans les fichiers du projet. Moi je voulais obtenir quelque chose de totalement transparent.

Pour garder les 100% de transparence tout en autorisant la compilation séparée, il faudrait faire un likeonpc.a et placer ce qui va bien dans un .h. Problème : l'éditeur des liens verrait deux définitions de _main quand on compilerait les programmes TIGCC classiques (la définition du programmeur et celle du .a). Il faudrait modifier le linker pour qu'il privilégie la définition du programmeur en cas de double définition, comme l'a suggéré Kevin.
On dirait que ce projet vous intéresse, donc n'hésitez pas à formuler une demande allant en ce sens à Kevin et à Lionel. S'il n'y a que moi à le suggérer, il ne le feront pas wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

65

Zephyr (./61) :
et ajouter ton .c à la compilation

ben oui, bien sûr, mais c'est plus transparent tongue

66

Kevin Kofler (./64) :
Il y a même une fonction pour ça!

non, certains types d'args ne sont pas gérés par sa lib. faut compter à la main. c'est vraiment rapide aussi.
Thibaut (./65) :
Ca compliquerait la tache du programmeur. Il devrait faire un copier-coller du .c à chaque nouveau projet et l'inclure dans les fichiers du projet

gni? include le fichier .c a la limite, c'est crade, mais ça concernerait moins de gens!
Thibaut (./65) :
Problème : l'éditeur des liens verrait deux définitions de _main quand on compilerait les programmes TIGCC classiques

ben non, ton main() et le _main() de tigcc sont différents! ça pose pas de souci. Si l'utilisateur crée un "_main()" c'est son problème, ça doublonne avec celui de la lib, mais tant pis.


ou alors, le pb c'est que gtc définit main() ?

67

Je crois que tu ne prends pas le temps de lire ce que je dis, le contexte t'échappe.

Pour le parsing des arguments, snprintf n'irait pas. J'ai employé un algo un peu plus compliqué qu'un appel à snprintf parceque les chaines sont parsées et que la taille parsée ne correspond pas à la taille d'origine. Il n'y a pas de simple recopie. Je vais rajouter un compteur de caractères dans l'algo pour fixer ce problème de dépassement.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

68

Kevin : Il faut rester réaliste sur la pertinence de limiter la taille totale des arguments.

Si la limite de 256 caractères te semble trop faible : Je doute que tu aies déjà tapé plus de 256 octets d'arguments (espaces non compris) à la suite d'une commande.
Si les 288 octets pris systématiquement par la couche d'abstraction te semblent trop : Que penser des 3,8ko pris par le SAVE_SCREEN de ta bibliothèque ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

69

squalyl : Sur la contrainte du copier-coller, on est d'accord ? Sur la contrainte d'inclusion, je me suis mal exprimé : je parlais d'inclure le .c à son projet, parmi les autres .c.



Vous qui voulez du propre, la solution la plus simple pour les programmeurs, la plus naturelle, donnant le comportement le plus standard, ne serait pas de modifier le linker puis intégrer la couche à TIGCClib ? Cette petite couche de compatibilité ANSI aurait du exister depuis longtemps. Allez, ça doit prendre 3 lignes de code dans le linker. Il suffit qu'on le demande.
Mais êtes vous vraiment là pour faire avancer le projet (je parle de son essence, sa transparence, l'apparition d'une portabilité naturelle pour les programmeurs finaux) ou pour critiquer confus
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

70

Dieu sait si ça a un rapport mais GTC a des problèmes de compilation là, il plante à l'appui sur F5. Du coup je suis obligé de forcer un crash (ESC+ON) et de déchacher gtc_ide mais bon c'est complètement aléatoire .

71

Je n'ai pas ce soucis. C'est toi qui avait envoyé la librairie dans les mauvais répertoires ? Si oui, tu devrais tout virer, rebooter, et tout réinstaller comme prévu. Dans tous les cas, rebooter et assure-toi de bien avoir tout archivé wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

72

FireHunter (./70) :
je suis obligé de forcer un crash (ESC+ON)

un hot-resest, c'est précisément l'inverse d'un crash grin

73

Thibaut (./64) :
Il faudrait modifier le linker pour qu'il privilégie la définition du programmeur en cas de double définition, comme l'a suggéré Kevin.

C'est déjà le cas normalement. S'il y a une fonction dans un .a qui est déjà définie dans le programme lui-même, l'objet en question n'est pas importé du .a.
squalyl (./66) :
non, certains types d'args ne sont pas gérés par sa lib. faut compter à la main. c'est vraiment rapide aussi.

C'est au moins une borne supérieure, ce qui est tout ce qu'il faut.
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é

74

Il me semble que Genlib redéfinit main, tu pourrais t'en inspirer (dans sa version statique, pour le C).

75

Il n'y a pas de version vraiment statique de genlib.
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é

76

Thibaut (./69) :
Mais êtes vous vraiment là pour faire avancer le projet (je parle de son essence, sa transparence, l'apparition d'une portabilité naturelle pour les programmeurs finaux) ou pour critiquer confus

Pour le critiquer bien sûr ("critiquer" a un sens forcément négatif pour toi ?). Mais il me semble que pour l'instant toutes les critiques formulées ont été appuyées d'exemples et/ou de suggestions, donc je ne vois le le problème. À moins bien sûr que les seuls posts attendus dans ce topic soient "bravo Thibaut, ton programme est parfait" et auquel cas effectivement on a tous posté pour rien.

Pour reformuler puisque manifestement ça n'était pas clair : il me semble qu'ajouter un .c à un projet est une contrainte supportable, et que cette solution est très largement préférable à un .h contenant du code et toutes les incompatibilités que ça implique (l'obligation de compilation non-séparée, ça limite l'utilisation de ta lib à un nombre très limité de programmes). Après, c'est sûr qu'une modif du linker serait mieux, mais en attendant un éventuel changement de ce coté, le "moins pire" ne me semble pas être ta version actuelle.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

77

Tu ne peux pas dire ça Mr, j'ai pris en compte la plupart de vos suggestions. C'est sur la forme qu'il faut donner au bazar que j'objecte. Vous oubliez que sur GTC il n'y a pas de compilation séparée, donc ça aurait pour seul effet de compliquer. Quant à TIGCC, ça autoriserait la compilation séparée, mais compliquerait les choses alors que vous savez qu'il y a une solution bien plus transparente.

Kevin : La borne supérieure est définie et contrôlée, c'est 32.
Si ton linker priorise déjà les redéfinitions de symboles alors c'est parfait ! Je modifie les headers de TIGCClib et rajoute un .a dans la semaine. Après, vous pourrez l'intégrer officiellement si ça vous parait utile et fiable, sinon je distribuerai ça dans le zip, à charge aux utilisateurs d'ecraser les fichiers dans leur répertoire d'installation du compilo.

Est-ce que la lib de GCC4TI est identique à celle de TIGCC ? Si non, dans laquelle vaut-il mieux intégrer le système de compatibilité ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

78

Kevin Kofler (./75) :
Il n'y a pas de version vraiment statique de genlib.

Je sais plus exactement. Je parle de gl_main en tout cas.

Et fais ta demande de suggestion de modification du linker sur www.yaronet.com/gcc4ti smile

79

Ouai, s'il ne prend pas le _main du .a quand le programmeur n'a pas défini de _main.
Si ça marche, alors c'est plutôt le nouveau .c dans les sources de la bibliotheque et les nouveaux headers qui seront soumis. Si c'est accepté, je soumettrai aussi un nouveau stdio supportant stdin et stdout (sommairement).
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

80

Folco (./72) :
FireHunter (./70) :
je suis obligé de forcer un crash (ESC+ON)

un hot-resest, c'est précisément l'inverse d'un crash grin


PreOS : Crash intercepted grin

81

Ouep, c'est la procédure de hot reset qui dit ça, mais tu peux la lancer sur un programme qui tourne rond.

82

Je n'ai pas encore regardé les sources, et je ne sais pas si GTC supporte, mais défini au moins tes fonctions en static, ça evitera pour du multisources de tenter d'exporter les nom de fonctions, donc ça évitera des problèmes de links, par contre vive le code dupliqué au sein du meme projet ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

83

Thibaut (./67) :
pour fixer ce problème

À quel endroit, au mur ? confus (c'est comme assumer, dsl mais ça raye les yeux couic2 tongue)

84

./82 Ben justement il dit depuis le début qu’on ne peut pas inclure le .h plusieurs fois triso

Sinon, il n’y a pas un répertoire où ld-tigcc va chercher des .a par défaut pour linker (l’équivalent de /usr/lib) ? Il suffirait de faire une lib statique et les programmeurs, après avoir installé l’ensemble (cad copié les fichiers .h et .a dans les répertoires include et lib de tigcc/gcc4ti respectivement), n’auraient qu’à faire un #include <likeonpc.h>.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

85

<stdio.h> s'il te plait smile
On peut le faire, auquel cas likeonpc dé-définit des macros de <tigcclib.h> pour les redéfinir à sa façon. Ce n'est pas la méthode la plus propre. Vous ne pensez pas que TIGCC et sa lib devrait supporter nativement le standard ANSI, et ce depuis longtemps ? Sachant que tous les anciens programmes TIGCC resteront compilables puisque la couche de portabilité ne serait activée qu'en l'absence de _main.

Pen2 : Je n'ai pas compris !?

Godzil : Oui, ça va être fait. squalyl a été preums sur le coup tongue
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

86

Bon j'viens d'essayer la nouvelle version, et ça me fout des coups d'erreur avec ce message:

"Need preprocessor command in 'patch'" On-calc

Dans la foulée, vu que je m'vire toutes les fonctions de manipulations d'octets en ne mettant pas tigcclib en header, t'as pas fait de fonction qui fasse ça ? happy

87

Ce sont quelles fonctions ?
Thibaut (./85) :
Vous ne pensez pas que TIGCC et sa lib devrait supporter nativement le standard ANSI, et ce depuis longtemps ?
Bof, en même temps c’est fait pour coder sur AMS, sur un système limité en ressources, une telle couche ne me paraît pas nécessaire par défaut (et puis jusqu’où maintenir la compatibilité ? ce que tu proposes est intéressant mais incomplet…).
Après, que ce soit mieux intégré à l’IDE serait sûrement une bonne chose (genre juste une case à cocher dans les paramètres du projet, ou un symbole à exporter).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

88

speek et compagnie... Ou alors c'est moi qui mélange tout entre GTC et GTC4TI ><"

89

avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

90

FireHunter, tu dois avoir merdé quelque chose dans l'installation grin Ils sont très bizarres tes messages d'erreur.

Sasume : ouai, mais bon, si c'est supporté nativement c'est encore mieux non ? Lionel et Kevin, les spécialistes de la question, vous pensez que ça casserait trop de progs existants ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.