Merde, j'ai l'impression que je me suis over-mal exprimé, j'ai pas trop de réponse, là
mais est-ce que tes sous-fonctions sont utilisées à un unique endroit dans le code ?
Oui.
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
Et que signifient static et inline ? Autrement que dans mon bouquin tout foireux ?
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.
Je parle pas des bsr/rts->bra, mais du fait d'appeler une fonction qui n'a pas re "return" en fait.
Grosso-merdo, si j'ai ça :
void func1 (void);
{...
func2();
...}
func2 a pas besoin de faire de return, mais va jumper directement ailleurs, peut-être même au début de func1. Donc pas la peine d'empiler des adresses de retour à foison.
Et pourquoi longjmp çaylemal ?