Si bien, en teoría, se puede escribir BIOS en cualquier lenguaje, la realidad moderna es que la mayoría de los BIOS se escriben usando ensamblado, C o una combinación de ambos .
El BIOS debe estar escrito en un lenguaje que pueda compilar el código de la máquina , que es entendido por la máquina física del hardware. Esto elimina los lenguajes interpretados directa o intermediamente (Perl, Python, PHP, Ruby, Java, C #, JavaScript, etc.) como apropiados para escribir BIOS. (Aunque, en teoría, uno podría implementar uno de estos lenguajes para compilar directamente en código de máquina estático o podría incrustar de alguna manera el intérprete en BIOS. Existe, por ejemplo, el proyecto abandonware GCJ para Java).
La mayoría de los OEM implementan un BIOS extendiendo implementaciones de BIOS genéricas y patentadas por compañías como American Megatrends y Phoenix Techologies . (Probablemente ya haya visto una de esas compañías en la primera pantalla de arranque de una computadora). El código fuente de estas implementaciones no está disponible públicamente, pero parte de él se ha filtrado. No quiero vincular esto directamente con el código fuente de C y ensamblado, pero hay lugares en Internet donde se discute este código fuente para aquellos que desean echar un vistazo.
Algunos fabricantes de hardware, como los que se dirigen a los mercados de alto rendimiento y juegos, saturan sus implementaciones de BIOS con características de personalización, estadísticas e interfaces de usuario atractivas diseñadas para sus implementaciones exactas. Muchas de estas características van más allá de lo que se ofrece en los productos genéricos producidos por American Megatrends y otros. Desafortunadamente, estas compañías a menudo ven el lanzamiento de su código fuente como un riesgo de seguridad , por lo que se sabe muy poco acerca de estas implementaciones de gama alta porque se comparte poco sobre ellas. Por supuesto, uno podría encontrar formas de acceder y descompilar dichas implementaciones de BIOS, pero hacerlo puede ser difícil y posiblemente ilegal.
Volviendo a la pregunta original, debido a la necesidad de producir código máquina nativo, un BIOS tendría que implementarse en un lenguaje de programación compatible con un compilador de código máquina nativo . Si bien existen muchos lenguajes de este tipo y, aunque estoy seguro de que en las últimas décadas, se han utilizado varios lenguajes en la experimentación, cada implementación de BIOS abierta que he podido encontrar se basa específicamente en una combinación de C y / o ensamblaje. Las implementaciones de BIOS de código abierto que miré para llegar a esta conclusión incluyen OpenBIOS , tinyBIOS , coreboot , Intel BIOS y Libreboot. También miré algunas implementaciones de BIOS muy antiguas que no son relevantes hoy en día, pero también seguí la regla C y / o de ensamblaje.
Creo que también es relevante mirar otro software creado para interactuar directamente con el hardware. Sabemos, por ejemplo, que el kernel de Linux , el kernel de OS X y el kernel de Windows son principalmente C con algunos ensamblados y algunos lenguajes de nivel superior para tareas específicas. También sabemos que los controladores de hardware en Linux y los controladores de hardware en Windows están escritos principalmente en C.
Volviendo al BIOS, creo que también es importante tener en cuenta la economía del lenguaje de programación elegido. El BIOS generalmente se escribe como una necesidad para complementar las ventas de hardware. Se sabe que los sistemas BIOS modernos se escriben principalmente en C y / o ensamblado. Un cambio a otra herramienta agregaría costos significativos a lo que generalmente se consideran productos básicos que podrían afectar negativamente las ventas. Sin entrar en Economía 101, puedo asegurarle que probablemente no valga la pena que un OEM se desvíe de las herramientas probadas y verdaderas que se han demostrado durante décadas.
Por supuesto, hay y habrá proyectos de aficionados para escribir BIOS también. Estos también, hasta ahora, parecen estar eligiendo C y / o ensamblaje. Quizás algún día se utilizarán otras tecnologías. Pero hoy, la elección de está bien definida.