Comment un programme fonctionne t'il sur plusieurs architecture?
artha77
Messages postés
116
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
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 :)
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:
- Comment un programme fonctionne t'il sur plusieurs architecture?
- Logiciel architecture gratuit - Télécharger - Architecture & Déco
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme sur windows - Guide
- Forcer la fermeture d'un programme - Guide
1 réponse
'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)
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)