j'ai un pb: je realise un projet sous tigcc qui contient notamment des headers bourrés de vars de type unsigned long, 2000 octets chacune. Le pb c que au bout d'un certain nb (10) de ces variables inclues dans le projet, tigcc ne veut plus compiler. comment ça se fait?
Pim89 Le 09/04/2002 à 17:35 quel taille pour ton projet ?
Non-Webmaster et
non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les
Webmasters .«- Pas Moo ! ^^
bah mon fichier 89y fait environ 18k jcrois
PpHd Le 09/04/2002 à 17:49 Peux-tu detailler davantage ?
en gros il faut que je créé un header nommé "levls" qui est censé contenir 12 "backgrounds" au format 89, donc chacun des unsigned long déclarés doivent faire 2000 octets chacuns. genre:
unsigned long scr1_C0[]={0xFFFFFFFF...,....,...etc.}
unsigned long scr1_C1[]={0xFFFFFFFF...,....,...etc.}
le pb c qu'au bout de 20 de ces déclarations au sein d'un meme header, tigcc ne veut plus compiler: il s'arrete a la creation d'un fichier .o et .s mais pas d'executable!
j'ai donc créé plusieurs headers pour séparer les données en deux parties, mais le pb persiste
PpHd Le 09/04/2002 à 18:12 20*2000*4 = 160000 octets. Legerement trop, non ?
PpHd Le 09/04/2002 à 18:23 Des fichier separes pour chacun de tes headers. Si tu veux pas t'embeter, tu le fais en mode kernel et des libraries en read-only. Tres simple a implementer.
PpHd Le 09/04/2002 à 18:23 Masi Kevin va t'expliquer comment faire en nostub.
mais je comprends pas l'interet des archives, parskeu dans mon projet, il faudra bien inclure mes .h de toutes facon. or ce sont ces fichiers qui sont apparamment tro gros
Donc:
1. Tu remplaces:
unsigned long scr1_C0[]={0xFFFFFFFF...,....,...etc.};
unsigned long scr1_C1[]={0xFFFFFFFF...,....,...etc.};
par:
unsigned long *scr1_C0;
unsigned long *scr1_C1;
2. Tu mets les données:
{0xFFFFFFFF...,....,...etc.}
{0xFFFFFFFF...,....,...etc.}
dans un fichier externe.
3. Si tu en es à 64 KO, tu commences un nouveau fichier externe.
4. Dans le programme, tu lis le(s) fichier(s) externe(s) avec:
SYM_ENTRY *sym_entry=SymFindPtr($(fichier),0);
if(!sym_entry) exit(960); //ERROR: Undefined Variable
HANDLE handle=sym_entry->handle;
if(!handle) exit(960); //ERROR: Undefined Variable
scr1_C0=HeapDeref(handle)+2;
scr1_C1=scr1_C0+(2000>>2);
scr1_C2=scr1_C1+(2000>>2);
//etc.
(Ceci présuppose que les données ne sont pas compressées. S'ils le sont, va voir la TIGCC Tools Suite et/ou ExtGraph.)
[edit]Edité par Kevin Kofler le 09-04-2002 à 23:35:34[/edit]