Réponse:
Les gains indirects sont décrits à la question précédente.
On peut retrouver ces gains si l'on connaît effectivement les registres
utilisés par la fonction carré
pendant la compilation de la fonction
cube
(il suffit de compiler carré
avant
cube
).
On saura alors, par exemple, que les registres temporaires
t0, t1, ... ne sont pas utilisés par la fonction carré
et peuvent l'être par la fonction cube
pour sauvegarder les valeurs
intermédiaires et l'adresse de retour, ce qui évitera tous les mouvements de
pile dans la fonction cube
.
Plus généralement, une analyse inter-procédurale permettrait de passer les
arguments dans des registres non conventionnels.