2010-08-07 23 views
5

Los idiomas de bajo nivel y los idiomas del nivel de ensamblaje dependen de la máquina. Mi pregunta es ¿qué significa? Quiero decir, depende del procesador o las características de la máquina como la RAM, el reloj, etc.¿Qué significa 'dependencia' de la máquina?

¿Y cómo los idiomas de alto nivel superan esto?

Respuesta

5

En el nivel más profundo, significa que los conjuntos de instrucciones difieren. Poner una secuencia particular de bits a través de un procesador x86 le dará resultados completamente diferentes que si pone el mismo conjunto de bits, por ejemplo, un procesador ARM.

Los idiomas de nivel superior "superan" esto porque las computadoras hacen prácticamente las mismas cosas, solo que de diferentes maneras. ARM tiene formas de agregar dos números al igual que hace x86, tiene formas de cargar datos de RAM en registros (y viceversa) como lo hace x86, etc.

Todos los constructos de alto nivel pueden eventualmente reducirse a un conjunto fundamental de operaciones que pueden ser realizadas por todas las máquinas de propósito general (aunque algunas construcciones pueden resultar más eficientes en algunas CPU que en otras).

Esto es lo que hacen los compiladores. Analizan el lenguaje de alto nivel y, de una forma u otra, lo reducen al lenguaje de máquina del sistema de destino. A menudo, solo se deben escribir nuevos bits del compilador para una nueva CPU. Algunos compiladores (GCC es un excelente ejemplo) están construidos en capas que simplifican enormemente este trabajo. Un único desarrollador altamente capacitado y familiarizado con los compiladores y la plataforma objetivo podría producir un puerto rudimentario con bastante facilidad.

Por encima del simple hecho de reducir las construcciones al lenguaje de máquina nativo, existen problemas como entrada/salida, acceso al sistema de archivos, etc. Estos también suelen manejarse en capas, a menudo con los niveles más bajos - - controladores - siendo reescrito para una nueva plataforma, manteniendo una interfaz consistente con los niveles superiores.

¡E incluso los controladores a menudo se pueden compartir, en todo o en parte, en todos los tipos de máquinas! Las plataformas x86 no son las únicas que han tenido, por ejemplo, un bus PCI. E incluso cuando el autobús es diferente, los dispositivos conectados a ellos a menudo terminan siendo los mismos. Linux comparte varios controladores de dispositivo en varios tipos de máquinas con poco o ningún cambio. El compilador maneja los detalles de la traducción al código de la máquina y mientras más capas internas del kernel intenten abstraerse de las otras diferencias de comportamiento que pueden, el programa piloto debe simplemente adherirse a las interfaces establecidas.

Pasado esto, se llega a preguntas sobre si, dentro de una plataforma determinada, cualquier sistema en particular tiene determinados dispositivos opcionales (o categorías de dispositivos). Por ejemplo, sería tonto para la mayoría de los servidores tener aceleradores 3D. Algunos sistemas pueden tener un generador de números aleatorios de hardware, otros no. Algunos pueden no tener almacenamiento fijo. Sin embargo, no calificado, la "dependencia de la máquina" no suele abordar este nivel de dependencia.

0

depende de la máquina, fundamentalmente, depende del hardware que comprende la computadora - RAM se puede acceder a través del bus CPU + RAM por lo que no es necesariamente, sin embargo, tarjetas de video, almacenamiento externo, mouse/teclado etc. son

Esto se soluciona al abstraer las complejidades del hardware utilizando controladores que tienen una interfaz común; por ejemplo, DirectX abstrae la interacción con una tarjeta de video al proporcionar una interfaz bien definida.

Cuestiones relacionadas