aze Le 19/09/2005 à 16:47 si le tableau est mis dans un segment BSS il ne prendra pas autant ^^
(tigcc fait ca tout seul si on lui dit)
aze Le 19/09/2005 à 17:09 typiquement tu peux laisser l"adresse de ton ecran virtuel en global
Ok, mais our les variables globales je n' utilise "que" pour l' instant:
la variable quit => remplacé par une fonction shutdown{ quit = 1; } dans main.c (mais néanmoins en globale dans main.c ....)
les sprites => bien obligé de les utiliser en globales ! (ou sinon comment faire ?)
structure du vaisseau => mis en globale dans app.h
variable de la taille de la structure des munitions et structure => obligatoirement en globale car dans app.c et game.c
Et pour le realloc heuh en fait alors comment fait-on habituellement pour avoir n structures sans connaitre n ? J' ai beau chercher mais la seule manière que je trouve est l' allocation dynamique...
Ok, je n' utilise que TiEmu car il s' agit d' un des rares emulateurs sosu Linux. (du moins le seul que je connaisse.)
Les BSS n'améliorent que les programmes mal écrits (par exemple CC): pour faire comme il faut, les allocations doivent être faites à la main, comme on fait depuis des années en AMS native...
Comment on dit à TIGCC de rendre dynamique une variable globale ?

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.
Jyaif Le 22/09/2005 à 12:55 On ne dit pas à tigcc de le faire, on le programme soit meme généralement en utilisant un pointeur global qui pointe vers une zone mémoire alouée.
Ah ok ! Et pourquoi les variables globales non-initialisées ne sont-elles pas BSS par défaut ?

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.
#16: ... maintenant (TIGCC 0.95+). Même si ça se rapproche du comportement standard des programmes sur d'autres plate-formes, sur la nôtre, ça casse la compatibilité antérieure, pour un résultat qui est en pratique, il faut bien le dire, souvent pire.
Les programmes n'utilisant que quelques dizaines d'octets de globals non initialisés (= les programmes bien écrits, le reste s'allouant à la main) bénéficient souvent souvent de -DMERGE_BSS ou -mno-bss, par le passage de références xxx.l relogées à des références d(pc) non relogées (au moins en lecture - en écriture, il faut utiliser -mpcrel si le programme n'est pas trop gros, -freg-relative-an sinon). ~2 KB sur Ice Hockey 68k, par exemple.
Au passage: au niveau de l'allocation mémoire à la main, pour plus d'efficacité, il faut les compacter. Plusieurs centaines d'octets sur TI-Chess, Pepzip, etc. C'est plus sensible à la fragmentation, Kevin et PpHd le disent souvent, mais je n'ai jamais vu le problème, et en pratique, si la calculette n'est pas capable d'allouer des blocs d'une vingtaine à une trentaine de KB, ça veut dire qu'elle n'est pas non plus capable de tourner les gros programmes => reset !
(Certes, je me répète, mais les autres aussi - les BSS, en pratique, sont en général une connerie, et il faut que ça se sache ! Ca ne va pas durer, vu que c'est écrit - en anglais - dans S1P9)

En fait il faudrait rendre dynamique uniquement les variables globales les plus grosses (tableaux...). Qu'en penses-tu ?

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.
C'est ce que fait Ice Hockey 68k, entre autres. TI-Chess le fait dans une moindre mesure, il reste de gros globals non initialisés mergés dans la section data.