Хоча теоретично можна писати BIOS будь-якою мовою, сучасна реальність більшості BIOS пишеться за допомогою зборки, C або комбінації двох .
BIOS повинен бути написаний мовою, яка може компілювати до машинного коду , що розуміється фізичною апаратною машиною. Це виключає інтерпретовані безпосередньо чи проміжні мови (Perl, Python, PHP, Ruby, Java, C #, JavaScript тощо) як відповідні для написання BIOS. (Хоча теоретично можна було реалізувати одну з цих мов для компіляції безпосередньо до статичного машинного коду, або можна якось вставити інтерпретатор в BIOS. Існує, наприклад, проект GCJ для залишення програмного забезпечення для Java.)
Більшість виробників оригіналу впроваджують BIOS шляхом розширення фірмових, загальних реалізацій BIOS таких компаній, як американські Megatrends та Phoenix Techologies . (Ви, напевно, раніше бачили, що одна з цих компаній відображалася на першому завантажувальному екрані комп’ютера.) Вихідний код для цих реалізацій не є загальнодоступним, але частина його просочилася. Я не хочу посилатися на це безпосередньо на вихідний код C та збірки, але в Інтернеті є місця, де цей вихідний код обговорюється для тих, хто хоче заглянути.
Деякі виробники обладнання, наприклад, орієнтовані на високопродуктивні та ігрові ринки, насичують їх реалізацію BIOS функціями налаштування, статистикою та привабливими користувацькими інтерфейсами, призначеними для їх точної реалізації. Багато з цих особливостей виходять за рамки того, що пропонується в генеричних продуктах, вироблених американськими мегатрендами та іншими. На жаль, ці компанії часто сприймають випуск свого вихідного коду як ризик для безпеки , тому про ці високі версії реалізовано мало відомо, оскільки про них мало спільного. Звичайно, можна знайти способи доступу та декомпіляції таких реалізацій BIOS, але це може бути важким і, можливо, незаконним.
Повернувшись до початкового питання, через необхідність створення кодового машинного коду, BIOS повинен був бути реалізований мовою програмування, підтримуваною нативним компілятором машинного коду . Незважаючи на те, що таких мов багато, і хоча я впевнений, що протягом останніх десятиліть кілька експериментів використовувались в експерименті, кожна відкрита реалізація BIOS, яку я змогла знайти, спеціально покладається на комбінацію C та / або збірки. Реалізації BIOS з відкритим джерелом, які я розглядав, щоб сформулювати цей висновок, включають OpenBIOS , tinyBIOS , coreboot , Intel BIOS та Libreboot. Я також переглянув деякі дуже старі реалізації BIOS, які не є актуальними сьогодні, але також дотримувались правила C та / або складання.
Я думаю, що також доречно переглянути інше програмне забезпечення, побудоване для прямої взаємодії з обладнанням. Ми знаємо, наприклад, що ядро Linux , то OS X ядро і ядро Windows , в основному C з деякою збірки і деяких високорівневих мов для виконання конкретних завдань. Ми також знаємо, що драйвери апаратного забезпечення для Linux та драйвери апаратного забезпечення для Windows написані значною мірою на C.
Повертаючись до BIOS, я думаю, що також важливо враховувати економіку обраної мови програмування. В основному BIOS пишеться як необхідність доповнити продажі обладнання. Як відомо, сучасні системи BIOS в основному написані на С та / або збірці. Перехід до якогось іншого інструменту додав би значні витрати до товарних товарів, що може дуже негативно вплинути на продаж. Не вдаючись до Економіки 101, я можу запевнити, що ПВТ, мабуть, не варто відступати від перевірених інструментів, що були перевірені десятиліттями.
Звичайно, існують і будуть проекти для любителів писати BIOS. Вони також поки що, здається, обирають С та / або збірку. Можливо, одного дня будуть використані інші технології. Але сьогодні вибір чітко визначений.