2010-01-11 49 views
7

Estoy tocando la superficie del conjunto de instrucciones x86 después de un largo período de programación de alto nivel. Han pasado cerca de 20 años que tuve mi primera lectura sobre la programación de ensamblaje x86 y de mis búsquedas en Google me perdí con la gran cantidad de referencias de conjuntos de instrucciones; de los que mezclan nuevas generaciones de procesadores (286, 386, 486 ...) con otros que agregan instrucciones x86 más nuevas. Sin mencionar las variaciones de AMD.x86 conjunto de instrucciones hoja de ruta

Como estoy planeando construir un gestor de arranque, mi primer pensamiento fue cumplir totalmente con 'estándar x86' pero no puedo determinar dónde está el tiempo ni si existe en algún lugar.

Incluso la documentación de Intel parece seguir el mismo camino y, como dijo otro, "necesitamos una estandarización de conjunto de instrucciones x86, la evolución de los códigos de operación es caótica".

No es mi idea mantener el banner de estandarización. Solo quiero ver el camino y entender dónde está el lugar seguro para caminar. ¡Si alguien pudiera ayudar, apreciaría mucho!

Respuesta

5

Históricamente, x86 ha sido muy compatible con versiones anteriores. x86-64 ha desechado algunas instrucciones muy antiguas (como las instrucciones BCD) pero es poco probable que estos tipos de cambios vuelvan a ocurrir (al menos no hasta que ocurra algo tan grande como la transición al espacio de direcciones de 64 bits).

Si desea asegurarse de que su código funciona en prácticamente todos los procesadores x86, cúmplase con el conjunto de instrucciones 386 (si su código es de 32 bits) o el conjunto de instrucciones early x86-64 (si es de 64 bits).

+1

Me he dado cuenta de una tendencia reciente para construir kernels de Linux en varias distribuciones para 586 (Pentium) o mejor en estos días ... aunque todavía no pueden usar los kernels 686 (Pentium II/III/IV/Pro) debido a las diferencias entre esas y las instrucciones k7 (AMD Athlon). – Powerlord

+0

R. Bemrose: Esa es una manera lógica de ir eventualmente. IMO, la belleza de x86-64 no es solo ser de 64 bits, sino establecer un mínimo razonable para las instrucciones respaldadas por los procesadores (por ejemplo, SSE) –

+0

https://fedoraproject.org/wiki/Features/F12X86Support Fedora 12 ahora se compila para i686 , dejando de lado el soporte para muchos procesadores antiguos. Mi pobre Vía C3 ... :-( – ephemient

1

El gestor de arranque se ejecuta en modo real de 16 bits (aunque tiene acceso a registros de 32 bits a través del prefijo de tamaño de operando). Obtenga una referencia de instrucción 386 y estará a salvo.

Cuestiones relacionadas