2009-07-10 6 views
19

Le langage C a été utilisé pour écrire UNIX afin d'atteindre la portabilité - le même programme de langage C compilé en utilisant différents compilateurs produit différentes instructions machine. Comment Windows OS peut-il fonctionner sur les processeurs Intel et AMD?Est-ce que les processeurs Intel et AMD ont le même assembleur?

+0

S'il vous plaît vous questionnez – Key

+2

ne clarifiez Quelqu'un se souvient :) série K5 d'AMD –

+0

Maintenant que AMD travaille sur ARM64, cette question est ambiguë :-) – Jeff

Répondre

4

Comme vous le supposez, les processeurs Intel et AMD de flux principal ont le même jeu d'instructions.

Windows ne s'exécute pas sur les puces ARM ou PowerPC, par exemple, car il dépend un peu du jeu d'instructions sous-jacent. Cependant, la plupart de Windows est écrit en C++ (pour autant que je sache), qui devrait être portable vers d'autres architectures. Windows NT even ran on PowerPC and other architectures.

+2

Et regardez le noyau Linux pour un système d'exploitation qui fonctionne sur de nombreuses architectures, même avec des jeux d'instructions différents. Alors que le code C est portable, beaucoup d'assembleur doit être changé pour chaque cible. –

+3

La XBox 360 utilise un noyau Windows 2000 modifié, s'exécutant sur une architecture PPC. Je suis sûr que Windows est probablement aussi portable que d'autres systèmes d'exploitation, il n'y a pas de forte motivation pour Microsoft de fournir d'autres versions au public (pour, comme, deux clients, ou plus). – Joey

+0

Cette réponse est généralement vraie, sauf dans le cas des jeux d'instructions SIMD. Les choses commencent à diverger quand vous mélangez 3DNow !, SSE1/2/3, etc., mais c'est aussi pourquoi les compilateurs x86 ne supportent généralement pas ces jeux d'instructions. – hythlodayr

4

AMD sont compatibles avec Intel, sinon ils n'auraient jamais pris pied sur le marché.

Ils sont effectivement compatibles avec les clones.

Ryan

2

AMD et Intel utilisent le même jeu d'instructions. Lorsque vous installez Windows sur un processeur AMD ou un processeur Intel, il ne "compile" pas de code sur la machine.

Je me souviens que beaucoup de gens étaient confus à ce sujet pendant le collège. Ils croient qu'une «installation» signifie qu'il compile du code sur votre machine. Ce n'est pas. La plupart sinon toutes les applications Windows en dehors des royaumes libres, vous sont données par binaire. En ce qui concerne la portabilité, cela n'est pas nécessairement vrai à 100%. Tandis que C est hautement portable, dans de nombreux cas l'écriture pour un système d'exploitation ou un système spécifique aura pour résultat que le code ne pourra être compilé/exécuté que sur cette boîte. Par exemple, certaines machines Unix gèrent différemment les fichiers et les répertoires afin de ne pas être 100% portables.

24

Les processeurs AMD et Intel (*) ont en commun un grand nombre d'instructions, de sorte qu'il est possible pour un compilateur ou un assembleur d'écrire du code binaire qui s'exécute "pareil" sur les deux. Cependant, différentes familles de processeurs, même celles d'un fabricant, possèdent leurs propres instructions, généralement appelées «extensions» ou autres. En ignorant le coprocesseur x87, la première fois que je me souviens que c'était un point de marketing, c'était quand tout allait soudainement "avec la technologie MMX (TM)". Le code binaire attendu pour être exécuté sur n'importe quel processeur doit soit éviter les extensions, soit détecter le type de CPU avant de les utiliser. L'architecture Itanium 64 bits d'Intel était complètement différente de l'architecture x86-64 d'AMD, donc pendant un certain temps, leurs offres 64 bits étaient non compatibles (et Itanium n'avait rien à voir avec x86, alors que x86-64 étendait l'ensemble d'instructions en ajoutant 64bit instructions). Intel a clignoté d'abord et a adopté x86-64, bien qu'il existe encore quelques différences: http://en.wikipedia.org/wiki/X86-64#Differences_between_AMD64_and_Intel_64

Windows utilise probablement le jeu d'instructions commun x86 ou x86-64 pour presque tout le code. Je ne serais pas surpris si plusieurs pilotes et codecs sont livrés en plusieurs versions, et la bonne sélectionnée une fois que le processeur a été interrogé. (*) En fait, Intel fabrique ou a fabriqué différents types de processeurs, y compris ARM (les processeurs ARM d'Intel s'appelaient XScale, mais je pense qu'ils ont vendu cette activité). Et AMD fait aussi d'autres processeurs.Mais nous savons quels processeurs Intel/AMD vous voulez dire :-)

+4

+1. En interne, AMD et Intel gèrent généralement ces instructions communes différemment: certaines instructions peuvent s'exécuter beaucoup plus lentement sur une architecture que sur l'autre. –

+0

Oui, bon point. "Exécute la même chose" vient avec des petits caractères. –

+0

Exactement exact et tel est le cas avec Linux. Je suis un hacker noyau Linux et si vous avez déjà recompilé votre propre noyau Linux, vous remarquerez que vous pouvez cibler une pléthore de types de CPU et, bien sûr, choisir le mauvais type et l'installer dans un core dump ou accroché système. Nice écrire par onebyone sur celui-ci !!! – Eric

0

Les processeurs Intel et AMD ont-ils le même assembleur? Un assembleur assemble un programme à exécuter sur un processeur. Votre question est donc erronée. Les processeurs n'utilisent PAS d'assembleurs.

Si vous voulez dire que le processeur Intel et AMD peuvent utiliser le même assembleur? Alors la réponse est OUI !!!

Tous les assembleurs sont, est un programme qui assemble d'autres programmes à partir de fichiers texte structurés. Visual Basic est un exemple d'assembleur.

Questions connexes