Albert Instinct :
Le bug dans le linker qui optimisait bsr+label+rts par bra+label a-t-il été corrigé ?
Ce n'est pas un bogue, ça a été dit et redit. Il faut mettre l'option -d à A68k, l'IDE la met par défaut pour les nouveaux projets, on ne peut pas faire plus.Ce n'est pas un bogue mais un mauvais feature et compte sur l'IDE pour ratrapper ca c'est pas une bonne solution car tout le monde ne se sert pas de l'IDE
Uther
:Ce n'est pas un bogue, ça a été dit et redit. Il faut mettre l'option -d à A68k, l'IDE la met par défaut pour les nouveaux projets, on ne peut pas faire plus.Ce n'est pas un bogue mais un mauvais feature et compte sur l'IDE pour ratrapper ca c'est pas une bonne solution car tout le monde ne se sert pas de l'IDE
Flanker
: Je préférais l'ancien linker ; c'est le 4eme programme que le nouveau linker me fait planter.
Jusqu'à présent j'ai eu la chance de m'en apercevoir mais ça ne sera peut-être pas toujours le cas
Sasume
: Mais Kevin, reconnaît quand même que votre optimisation est mal fichue...
beq _end bsr dfdsfsd _end: rts _end_700 ... rts
Flanker :
je n'ai plus confiance dans le nouveau linker, c'est tout. Il me skippe des labels alors qu'il ne devrait pas. Dans mon code, j'ai
beq _end
bsr dfdsfsd
_end:
rts
_end_700
...
rts
le bloc
_end:
rts
est complètement dégagé !
Sasume :
Ce n'est pas non plus de la faute du linker si il a été codé pour faire une optimisation qu'il n'a pas à faire... ? Vous devriez ne pas activer ce genre « d'optimisations » par défaut ; elles ne devraient être disponibles qu'avec un flag lors de l'appel du linker...
Sasume :
Flanker> Mais pourquoi tu fais un bsr juste avant un rts ? Écris directement la routine.
Pollux
: Parce que le bsr n'est pas tjs exécuté...
Pollux
: Parce que le bsr n'est pas tjs exécuté...
GodzilEt alors ?
: et si la routine etait utilisé a plusieurs endroits différents ? (genre une Sub Runtime, d'ou BSR et pas "BRA")
Sasume
:Pollux
: Parce que le bsr n'est pas tjs exécuté...GodzilEt alors ?
: et si la routine etait utilisé a plusieurs endroits différents ? (genre une Sub Runtime, d'ou BSR et pas "BRA")![]()
Je dois être à l'ouest puisque vous êtes deux à me contredire, mais je ne comprends pas le problème.
GodzilJe parle de faire ça :
: heu quand tu ecrit du C, si tu fait une fonction, c'est pour pouvoir l'utiliser un peu partout non ? sans avoir le code copié a chaque fois qu'on l'apelle (sauf avec inline, mais c une cas particulier) quand tu utilise bsr, c'est pour appeler une routine externe non ? et cette routine peu etre partagé a plusieurs endroit différent dans le code, alors pq il devrait le copier a chaque fois inutilement ?
Remplacer ce code :programme: ; code bsr fonction ; code bsr fonction rts fonct
par :programme: ; code bsr fonction ; code fonction: ; code