2009-07-10 63 views
19

El lenguaje C se usó para escribir UNIX para lograr la portabilidad: el mismo programa de lenguaje C compilado utilizando diferentes compiladores produce diferentes instrucciones de la máquina. ¿Cómo es que el sistema operativo Windows puede ejecutarse en procesadores Intel y AMD?¿Intel y el procesador AMD tienen el mismo ensamblador?

+0

Por favor, aclarar cuestionas – Key

+2

se acuerda nadie serie de AMD K5 :) –

+0

Ahora que AMD está trabajando en ARM64, esta pregunta es ambigua :-) – Jeff

Respuesta

4

Como sospecha, la corriente principal de los procesadores Intel y AMD tiene el mismo conjunto de instrucciones.

Windows no se ejecuta en chips ARM o PowerPC, por ejemplo, porque depende en cierto modo del conjunto de instrucciones subyacente.

Sin embargo, la mayor parte de Windows está escrito en C++ (hasta donde yo sé), que debería ser portátil para otras arquitecturas. Windows NT even ran on PowerPC and other architectures.

+2

y mirar el kernel de Linux para un sistema operativo que se ejecuta en muchas arquitecturas, incluso con diferentes conjuntos de instrucciones. Mientras que el código C es portátil, se debe cambiar mucho ensamblador para cada objetivo. –

+3

El XBox 360 utiliza un kernel modificado de Windows 2000, que se ejecuta en una arquitectura PPC. Estoy bastante seguro de que Windows es probablemente tan portátil como otros sistemas operativos, simplemente no hay un fuerte incentivo para que Microsoft realmente proporcione otras versiones al público (para dos clientes más o menos). – Joey

+0

Esta respuesta es mayormente cierta, excepto en el caso de los conjuntos de instrucciones SIMD. Las cosas empiezan a divergir cuando usted mezcla en 3DNow !, SSE1/2/3, etc., pero esta es la razón por la que los compiladores x86 generalmente no son compatibles con estos conjuntos de instrucciones. – hythlodayr

4

AMD son compatibles con Intel, de lo contrario, nunca habrían logrado afianzarse en el mercado.

Son efectivamente clon compatibles.

Ryan

2

AMD e Intel utilizan el mismo conjunto de instrucciones.

Cuando instala Windows en un procesador AMD o un procesador Intel, no "compila" el código en la máquina.

Recuerdo que muchas personas estaban confundidas sobre este tema durante la universidad. Creen que una "configuración" significa que está compilando código en su máquina. No lo es La mayoría, si no todas las aplicaciones de Windows fuera de los dominios libres, se te otorgan por binario.

En cuanto a la portabilidad, eso no necesariamente es 100% cierto. Mientras que C es muy portátil, en muchos casos escribir para un SO o sistema específico dará como resultado que el código solo sea capaz de compilarse/ejecutarse en esa caja. Por ejemplo, ciertas máquinas Unix manejan archivos y directorios de manera diferente, por lo que puede no ser 100% portátil.

24

Los procesadores AMD e Intel (*) tienen un gran conjunto de instrucciones en común, por lo que es posible que un compilador o ensamblador escriba código binario que ejecuta "lo mismo" en ambos.

Sin embargo, diferentes familias de procesadores, incluso de un fabricante, tienen sus propios conjuntos de instrucciones, generalmente denominados "extensiones" o lo que sea. Ignorando el coprocesador x87, la primera vez que recuerdo que este era un punto de comercialización fue cuando todo de repente pasó "con la tecnología MMX (TM)". El código binario que se espera que se ejecute en cualquier procesador necesita evitar extensiones o detectar el tipo de CPU antes de usarlas.

La arquitectura Intel Itanium de 64 bits era completamente diferente de la arquitectura x86-64 de AMD, por lo que durante un tiempo sus ofertas de 64 bits no eran compatibles (y Itanium no era nada parecido a x86, mientras que x86-64 extendía el conjunto de instrucciones agregando 64 bits instrucciones). Intel parpadeó primero y adoptó x86-64, aunque todavía hay algunas diferencias: http://en.wikipedia.org/wiki/X86-64#Differences_between_AMD64_and_Intel_64

Windows probablemente usa el conjunto de instrucciones x86 o x86-64 para casi todos los códigos. No me sorprendería si varios controladores y códecs se envían en varias versiones, y el correcto seleccionado una vez que la CPU ha sido interrogada.

(*) En realidad, Intel fabricó o hizo varios tipos de procesadores, incluido ARM (los procesadores ARM de Intel se llamaron XScale, pero creo que han vendido ese negocio). Y AMD también hace otros procesadores.Pero sabemos a qué procesadores Intel/AMD se refiere :-)

+4

+1. Internamente, AMD e Intel generalmente manejan estas instrucciones comunes de manera bastante diferente: algunas instrucciones pueden ejecutarse mucho más lentamente en una arquitectura que en la otra. –

+0

Sí, buen punto. "Corre lo mismo" viene con letra pequeña. –

+0

Exactamente a la derecha y tal es el caso de Linux. Soy un hacker del kernel de Linux y si alguna vez compiló su propio kernel de Linux, notará que puede apuntar a una gran cantidad de tipos de CPU y, por supuesto, elegir el tipo incorrecto e instalarlo en un basurero o colgado sistema. Agradable escribir por onebyone en este !!! – Eric

0

¿Intel y el procesador AMD tienen el mismo ensamblador? Un ensamblador ensambla un programa que se ejecutará en un procesador, por lo que su pregunta es incorrecta. Los procesadores NO usan ensambladores.

¿Si quiere decir que los procesadores Intel y AMD pueden ejecutar el mismo ensamblador? ¡¡¡Entonces la respuesta es sí!!!

Todos los ensambladores son, es un programa que ensambla otros programas desde archivos de texto estructurados. Visual Basic es un ejemplo de ensamblador.

Cuestiones relacionadas