Alors qu'en théorie on peut écrire le BIOS dans n’importe quelle langue, la réalité moderne est que la plupart du BIOS est écrit en utilisant Assembly, C, ou une combinaison des deux .
Le BIOS doit être écrit dans un langage capable de compiler en code machine , qui est compris par la machine matérielle physique. Cela élimine les langages interprétés directement ou intermédiaires (Perl, Python, PHP, Ruby, Java, C #, JavaScript, etc.) comme étant appropriés pour l'écriture de BIOS. (Bien que, théoriquement, on puisse implémenter l’un de ces langages pour compiler directement en code machine statique ou intégrer l’interpréteur dans le BIOS. Il existe, par exemple, le projet abandonware GCJ pour Java.)
La plupart des constructeurs implémentent un BIOS en étendant des implémentations de BIOS génériques propriétaires par des sociétés telles que American Megatrends et Phoenix Techologies . (Vous avez probablement déjà vu une de ces sociétés affichée sur le premier écran de démarrage d'un ordinateur.) Le code source de ces implémentations n'est pas publiquement disponible, mais certaines d'entre elles ont été divulguées. Je ne veux pas faire un lien direct avec le code source de C et de l'assembly, mais il existe des endroits sur Internet où ce code source est discuté pour ceux qui veulent regarder.
Certains fabricants de matériel, comme ceux ciblant les marchés des hautes performances et du jeu, saturent leurs implémentations de BIOS avec des fonctionnalités de personnalisation, des statistiques et des interfaces utilisateur attrayantes conçues pour leurs mises en œuvre exactes. Bon nombre de ces caractéristiques vont au-delà de ce que proposent les produits génériques produits par American Megatrends et d’autres. Malheureusement, ces sociétés voient souvent dans la publication de leur code source un risque pour la sécurité . Par conséquent, on sait peu de choses sur ces implémentations haut de gamme car elles sont peu partagées. On pourrait bien sûr trouver des moyens d’accéder à de telles implémentations du BIOS et de les décompiler, mais cela peut être difficile et peut-être illégal.
Pour revenir à la question initiale, en raison de la nécessité de produire du code machine natif, un BIOS devrait être implémenté dans un langage de programmation pris en charge par un compilateur de code machine natif . Bien qu'il existe de nombreux langages de ce type et que, bien que je sois sûr, au cours des dernières décennies, plusieurs langages aient été utilisés à des fins d'expérimentation, chaque implémentation de BIOS ouvert que j'ai pu trouver repose spécifiquement sur une combinaison de C et / ou d'assemblage. Les implémentations de BIOS à source ouverte que j'ai examinées pour formuler cette conclusion incluent OpenBIOS , tinyBIOS , coreboot , Intel BIOS et Libreboot.. J'ai également examiné de très anciennes implémentations de BIOS qui ne sont pas pertinentes aujourd'hui, mais qui respectaient également la règle C et / ou d'assemblage.
Je pense qu'il est également pertinent d'examiner d'autres logiciels conçus pour interagir directement avec le matériel. Nous savons, par exemple, que le noyau Linux , le noyau OS X et le noyau Windows sont en grande partie en C avec un assemblage et des langages de niveau supérieur pour des tâches spécifiques. Nous savons également que les pilotes de matériel sous Linux et Windows sont en grande partie écrits en C.
Pour revenir au BIOS, je pense qu’il est également important de considérer les aspects économiques du langage de programmation choisi. Le BIOS est généralement écrit comme une nécessité pour compléter les ventes de matériel. Les systèmes de BIOS modernes sont connus pour être écrits en grande partie en C et / ou en assembleur. Le passage à un autre outil ajouterait des coûts importants à ce que l’on considère généralement comme des produits de base, ce qui pourrait avoir un effet très négatif sur les ventes. Sans entrer dans Economics 101, je peux vous assurer que cela ne vaut probablement pas la peine pour un OEM de déroger aux outils éprouvés qui ont fait leurs preuves depuis des décennies.
Il y a bien sûr et il y aura des projets d'amateurs d'écriture de BIOS également. Celles-ci aussi, jusqu'à présent, semblent choisir C et / ou l'assemblage. Peut-être qu'un jour d'autres technologies seront utilisées. Mais aujourd'hui, le choix de est bien défini.