à tester la place que ça prend sur une CNP, voire à utiliser des inline pour économiser le code
Non, un inline ne va pas te faire gagner de la place, au contraire, puisque tu vas développer le code à chaque endroit où il est appelé. Le seul cas de figure où tu gagnes de la place en "inlinant" est si le code de la fonction est plus court que le call assembleur pour l’appeler, et la transmission des paramètres et la récupération des résultats. Mais en général, comme on utilise le moins possible ce mécanisme de communication dans du code µC et qu’on travaille plutôt par variables globales (cf ce que nous a dit Gilles il y a quelques réunions), le gain va donc être quasi nul, voire négatif.
L’inline ne fait gagner qu’une seule chose à coup sûr : du temps d’exécution. En effet, il supprime l’overhead du call, du prologue et de l’épilogue.
2 conclusions donc :
– il faut contrôler cela sur le listing assembleur généré par le compilo avant de décider.
– il faut oublier les principes méthodologiques utilisés habituellement en développement sur machine "confortable" 🙂
Non, un inline ne va pas te faire gagner de la place, au contraire, puisque tu vas développer le code à chaque endroit où il est appelé. Le seul cas de figure où tu gagnes de la place en "inlinant" est si le code de la fonction est plus court que le call assembleur pour l’appeler, et la transmission des paramètres et la récupération des résultats. Mais en général, comme on utilise le moins possible ce mécanisme de communication dans du code µC et qu’on travaille plutôt par variables globales (cf ce que nous a dit Gilles il y a quelques réunions), le gain va donc être quasi nul, voire négatif.
L’inline ne fait gagner qu’une seule chose à coup sûr : du temps d’exécution. En effet, il supprime l’overhead du call, du prologue et de l’épilogue.
2 conclusions donc :
– il faut contrôler cela sur le listing assembleur généré par le compilo avant de décider.
– il faut oublier les principes méthodologiques utilisés habituellement en développement sur machine "confortable" 🙂