|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre confirmé
![]() Ingénieur développement matériel électronique Inscription : juillet 2010 Messages : 142 ![]() |
Bonjour à tous.
J'ai une question concernant la compilation par gcc vers une cible Microblaze: Concéderons deux implémentation d'une même fonction : Code :
Code :
Quelqu'un peut-il m’éclairer SVP? |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 614 ![]() |
Bonjour,
Ces deux blocs ne sont pas si différents. Si tu y regardes bien, tu t'apercevras qu'il s'agit essentiellement du même code avec un certain nombre de lignes supplémentaires insérées à différents endroits. Voici par exemple les dernières lignes de l'extrait que tu as posté : Code :
Ces deux codes ne sont donc pas équivalents. L'un des deux doit entre autres déposer les valeurs initiales dans la pile ou ce qui en tient lieu sur l'architecture que tu utilises. C'est important lorsque l'on utilise des threads ou, en embarqué et bas-niveau, lorsque du matériel peut également accéder à la mémoire via DMA (par exemple une carte son ou vidéo). Après, le compilateur peut — ou non — effectuer certaines optimisations en fonction des options que tu lui passes. Vois du côté de « -O » si tu ne l'as pas déjà fait. Pour <multid3>, on ne sait pas à quoi sert cette fonction et on ne voit pas son code non plus, mais il est probable qu'il s'agisse d'une routine qui fasse une multiplication qui soit à la fois large (« 3600000000 » ne tient pas sur 32 bits signés) et utilisant une opérande en mémoire plutôt que dans un des registres du processeur. |
||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Ingénieur développement matériel électronique Inscription : juillet 2010 Messages : 142 ![]() |
Merci pour ta réponse.
Pour info <multid3> est un fonction de la libgcc qui renvoie un entier signé sur 64 bits étant le résultat de la multiplication de 2 non signé sur 32 bits : http://lxr.free-electrons.com/source...b/muldi3.c#L50 Les voies de gcc sont impénétrables... |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com