boogerman a écrit :
Kevin:
Je pense que je vais porter tout ça en nostub. D'après ce que j'ai lu dans ton tuto (qui est d'ailleurs très bon), il n'y a pas grand chose à réecrire. Le seul truc est comment je fais pour transformer une librairie dynamique en statique pour que l'éditeur de liens de TIGCC y compile automatiquement les fonctions que j'utilise?
La solution la plus simple est:
tigcc -ar lib.asm
Mais le problème est que dans ce cas, les fonctions ne pourront pas être séparées par l'éditeur de liens. Donc ce qu'il faut faire est faire un fichier ASM par fonction, et puis utiliser:
tigcc -ar lib0000.asm lib0001.asm lib0002.asm ...
Malheureusement, je me demande s'il ne faudra pas un fichier externe (librairie dynamique
_nostub) pour
lcdlib, vu que la taille totale de tes programmes est en ce moment de 68648 octets, et que la taille maximale d'un fichier sur TI-89/92+/V200 est de 65518 octets seulement. Le linkage statique réduira la quantité d'informations de relogements nécessaires, mais j'ai peur que ça ne suffira pas pour économiser 3130 octets.
Mais peut-être en désactivant le débogueur, on peut les économiser... À essayer.
Un autre truc: je pense que j'ai trouvé un bug dans tigcc.exe: lorsqu'un des sub-procès appelés (a68k, link, ...) trouve une erreur tigcc ne renvoie pas le code dans le CMD (on dirait qu'il retourne tj 0), donc si le tout fait partie d'un batch (tel un Makefile) la compilation ne s'arrête pas!
Je ne pense pas que c'est un bogue, je pense que tout simplement
tigcc.exe ne gère pas les "exit codes" et c'est tout. Tu peux en discuter avec Sebastian Reichelt si tu veux (maile-lui à Sebastian@tigcc.ticalc.org). Mais la solution la plus pratique pour voir si ça a marché est:
del toto.89z
del toto.9xz
tigcc toto.asm
if not exist toto.89z goto failure
if not exist toto.9xz goto failure
echo Success
goto success
:failure
echo Error
:success