
(chacun son tour

Martial Demolins (./48) :Pollux (./45) :
le must en vitesse étant de passer l'adresse de retour dans un registre d'adresse et pas sur la pile
Mais non voyons, j'ai mieux : move.l (%sp)+,%pc
_main: lea suiteDuCode(pc),ax bra.s func suiteDuCode: rts func: ;du code bra.s ax ; retourne au code appelant
Thibaut (./79) :
Intéressant et bien vu
Mais bon, on gagne quoi ? 4 cycles ? C'est négligeable devant le nombre de cycles que prend une fonction (disons 80 cycles minimum : appel, retour, sauvegarde et restauration des registres, création du frame, et code de la fonction lui-même). On gagne moins de 5% de temps d'exécution (et beaucoup moins pour les fonctions de taille un peu plus classique, du genre 5-10 lignes de C).
Si t'as une fonction qui fait moins de 80 cycles c'est autant faire une macro je trouve
Pen^2 (./78) :
bra.s ax ; retourne au code appelant