Comment un programme fonctionne t'il sur plusieurs architecture?

Fermé
artha77 Messages postés 116 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 3 septembre 2015 - 3 sept. 2015 à 01:19
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 3 sept. 2015 à 14:03
Bonjour, j'ai une question qui m'est venu en commençant à apprendre les assembleurs , comment un programme , écrit en C par exemple peut il fonctionner sur un ordinateur avec un processeur de la famille x86 , et sur un autre avec un processeur ARM (bon c'est peu probable ok , mais un raspberry pi par exemple qui a un processeur ARM ) comment un programme que j'execute sur mon pc perso avec un i5 fonctionne aussi sur mon raspberry pi avec un processeur ARM qui n'on pas la même façon de faire ? sur des processeur de la même famille et avec un fonctionnement relativement similaire je peut comprendre , un peu comme si a chaque processeur c'était des mise a jour qui rajoutait des instruction , il suffirait de s'en tenir au instruction les plus basique pour être compatible avec tout , mais la c'est carrément 2 manière de faire différente , et pourtant au final on que 1 seul exécutable produit , imaginons que je code en assembleur pour des processeur avec une architecture.

bon je suis loin , très loin d'être expert dans le domaine , donc désolé si je dis des chose stupide , si j'emploie des terme inapproprié ou autres, mais justement je veut apprendre , comment fonctionne la machine , le processeur , le langage machine et les assembleurs , donc si au passage vous avez des lien à me passer pour apprendre tout cela , ou même me conseiller sur l'ordre dans le quel procédé pour apprendre (commencer par le fonctionnement intime d'un processeur porte logique etc.. ou par de l'assembleur direct , fin vous voyez :D ) , si vous connaissez des livre qui sont très bon sur le sujet , ou des video , bref toute ressources qui puisse m'aider :) , ou même si l'un de vous aurait l'envie et la gentillesse de me passer sont skype , ou tout autre moyen de communication pour partager , échanger , discuter avec moi :) le savoir est inestimable après tout , donc sa serai cool :) j'aime savoir comment fonctionne les chose au niveau leur plus fondamental :) par forcement pour ré inventé la roue , mais pour mieux l'utiliser , et juste par simple envie de connaissance :) après tout fut il une raison pour vouloir savoir ?

merci d'avance en tout cas :)
A voir également:

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
3 sept. 2015 à 14:03
'lut, pour répondre à la première partie de ta question, la réponse est simple:
un programme écrit en C (ou autre) marche sur plusieurs architectures tout simplement car les langages de programmation, C inclus, font abstraction partielle ou totale de la plate-forme sur laquelle le programme tourne. Seul le compilateur/interpréteur se charge de faire en sorte que ça marche sur la machine cible.
Ceci dit l'exécutable final est incompatible entre les 2, il y a donc une version x86(_64) et ARM indépendantes qui sont produites dans ton exemple.
(quoique selon l'OS et les formats il est possible d'avoir un seul fichier contenant le code de plusieurs architectures, choisi au démarrage -- c'est que dans la théorie en revanche. En pratique ça existe mais c'est une démonstration technique relevant plus de l'extrême bidouillage qu'autre chose, on appelle ça un quine en anglais)
0