SallyLe 27/04/2009 à 19:05
Je ne suis pas sûr que je comprends très bien, mais est-ce que tes sous-fonctions sont utilisées à un unique endroit dans le code ? si oui tu peux les déclarer comme static inline et elles ne seront alors pas compilées comme des fonctions, mais mises directement dans la table de saut qui les appelle. J'ai fait ça partout dans foblub.
Sinon pour ce qui est de remplacer le bsr par bra, c'est le boulot de l'optimiseur ça (l'option -fomit-frame-pointer ou quelque chose du genre est peut-être nécessaire), ça n'est pas une question à te poser quand tu écris le programme.
Pour exécuter du code à un endroit dont tu connais l'adresse (tu as donc un pointeur de fonction vers cette endroit ?) ben tu fais juste l'appel de fonction normal avec la variable qui contient l'adresse. Si tu connais l'adresse et que tu veux en faire un pointeur de fonction, il faut caster (c'est comme ça que fait tigcclib pour les ROM call), avec une syntaxe imbitable. Et bien indiquer dans le type du cast quelle est la convention d'appel et tout, pour s'assurer que le compilateur appellera la fonction correctement.