4

Comment un exécutable peut-il fonctionner sur les systèmes AMD et Intel? Les jeux d'instructions d'AMD et d'Intel ne sont-ils pas différents? Comment fonctionne l'exécutable sur les deux? Comment compilent-ils exactement les fichiers pour qu'ils fonctionnent comme ça? Et quel est exactement le rôle de l'OS dans tout cela?Pourquoi un exécutable peut-il fonctionner sur les processeurs Intel et AMD?

+2

duplication possible de [Le processeur Intel et AMD ont-ils le même assembleur?] (Http://stackoverflow.com/questions/1109569/do-intel-and-amd-processor-have-the-same-assembler) – Jan

Répondre

2

La seule différence réelle entre AMD et Intel à une itération du processeur donné est la mise en œuvre des jeux d'instructions qu'ils prennent en charge. x86 (32 bits) et x64 (64 bits) sont les deux jeux d'instructions les plus courants pour les processeurs Intel et AMD.

Les différences sont quand Intel et AMD mettre en œuvre les jeux d'instructions dans leurs puces - mais ces mises en œuvre ne devrait avoir aucun effet sur l'instruction se fixe. Donc, si un programme a été compilé pour un processeur x64, il peut fonctionner sur n'importe quel processeur qui implémente le jeu d'instructions x64, que la plupart des processeurs modernes Intel et AMD implémentent.

Un excellent exemple d'une différence de mise en œuvre est la façon dont Intel aime HyperThread cœurs tandis que AMD aime juste ajouter plus de cœurs. Ils le font pour une multitude de raisons, telles que la consommation d'énergie et un meilleur traitement simultané, mais cela n'a pas vraiment d'impact si les programmes s'exécutent car cela ne change pas le jeu d'instructions. Une autre différence entre Intel et AMD est le nombre d'étapes de pipeline, ce qui peut affecter la vitesse.

complexités énormes entrent en jeu lorsque les systèmes d'exploitation sont pris en compte. Windows a d'énormes bibliothèques que les programmes doivent utiliser s'ils veulent s'exécuter sous Windows. Il en va de même pour Linux et Mac OS X. Comme ces bibliothèques ne sont pas partagées entre les systèmes d'exploitation, les programmes écrits sur un système d'exploitation ne fonctionneront probablement pas sur un autre.