1

pour autosymb oncalc, je veux faire une fonction qui remplacerait fgets, qui aurait pour paramètres la chaîne de caractères et un pointeur dans le fichier. Elle doit avancer ce pointeur donc le modifier.

char *getline(char *s,char *ptr) ne marche pas car ptr n'est pas modifié

char *getline(char *s,char **ptr) marche mais me génère un code qui n'est pas optimisé, si je fais :

char *c;
char dummy[512];
...
getline(dummy,&c);

le compilateur ne peut mettre c dans un registre (par ex a5) car on ne peut avoir de pointeur sur un registre.
l'ideal pour cette fonction serait de la déclarer avec un "register char *ptr" ou similaire pour que si le compilateur décide de mettre a0, il ne rajoute que move.l a5,a0 avant et move.l a0,a5 après l'appel de la fonction mais dans ce cas il considère que le paramètre ne doit pas être modifié et ça ne marche pas.

Comment faire ?

2

À part en utilisant une "global register variable" dans un registre fixé, je ne vois pas comment on pourrait faire.
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é

3

impossible car ptr est une varaible locale de la fonction Processfile qui est récursive (elle s'appelle quand elle trouve un include)