Sementara secara teori seseorang dapat menulis BIOS dalam bahasa apa pun, kenyataannya modern adalah kebanyakan BIOS ditulis menggunakan Assembly, C, atau kombinasi keduanya .
BIOS harus ditulis dalam bahasa yang dapat dikompilasi ke kode mesin , yang dipahami oleh mesin perangkat keras fisik. Ini menghilangkan bahasa yang ditafsirkan secara langsung atau menengah (Perl, Python, PHP, Ruby, Java, C #, JavaScript, dll) yang sesuai untuk menulis BIOS. (Meskipun, secara teori, seseorang dapat mengimplementasikan salah satu dari bahasa-bahasa ini untuk mengkompilasi langsung ke kode mesin statis atau seseorang dapat menanamkan penerjemah ke dalam BIOS. Sebagai contoh, ada proyek GCJ yang ditinggalkan untuk Java.)
Sebagian besar OEM menerapkan BIOS dengan memperluas kepemilikan, implementasi BIOS umum oleh perusahaan-perusahaan seperti American Megatrends dan Phoenix Techologies . (Anda mungkin pernah melihat salah satu perusahaan yang ditampilkan di layar boot pertama komputer sebelumnya.) Kode sumber untuk implementasi ini tidak tersedia untuk umum, tetapi beberapa di antaranya telah bocor. Saya tidak ingin menautkan ini langsung ke kode sumber C dan assembly, tetapi ada tempat - tempat di Internet di mana kode sumber ini dibahas bagi mereka yang ingin mengintip.
Beberapa produsen perangkat keras, seperti yang menargetkan kinerja tinggi dan pasar game, memenuhi implementasi BIOS mereka dengan fitur kustomisasi, statistik, dan antarmuka pengguna yang menarik yang dirancang untuk implementasi yang tepat. Banyak fitur ini melampaui apa yang ditawarkan dalam produk-produk generik yang diproduksi oleh American Megatrends dan lainnya. Sayangnya, perusahaan-perusahaan ini sering melihat pelepasan kode sumber mereka sebagai risiko keamanan , sehingga sedikit yang diketahui tentang implementasi kelas atas ini karena sedikit yang dibagikan tentang mereka. Seseorang tentu saja dapat menemukan cara untuk mengakses dan meng-compile implementasi BIOS seperti itu tetapi melakukannya mungkin sulit dan mungkin ilegal.
Kembali ke pertanyaan awal, karena kebutuhan untuk menghasilkan kode mesin asli, BIOS harus diimplementasikan dalam bahasa pemrograman yang didukung oleh kompiler kode mesin asli . Meskipun ada banyak bahasa seperti itu dan sementara saya yakin selama beberapa dekade terakhir, beberapa bahasa telah digunakan dalam percobaan, setiap implementasi BIOS terbuka yang saya dapat temukan secara khusus bergantung pada kombinasi C dan / atau rakitan. Implementasi open-source BIOS yang saya lihat untuk membentuk kesimpulan ini termasuk OpenBIOS , tinyBIOS , coreboot , Intel BIOS , dan Libreboot. Saya juga melihat beberapa implementasi BIOS yang sangat tua yang tidak relevan hari ini tetapi juga mengikuti aturan C dan / atau assembly.
Saya pikir itu juga relevan untuk melihat perangkat lunak lain yang dibangun untuk berinteraksi langsung dengan perangkat keras. Kita tahu, misalnya, bahwa Kernel Linux , OS X kernel , dan kernel Windows sebagian besar C dengan beberapa rakitan dan beberapa bahasa tingkat yang lebih tinggi untuk tugas-tugas tertentu. Kita juga tahu bahwa driver perangkat keras di Linux dan driver perangkat keras di Windows sebagian besar ditulis dalam C.
Kembali ke BIOS, saya pikir juga penting untuk mempertimbangkan ekonomi dari bahasa pemrograman yang dipilih. BIOS umumnya ditulis sebagai kebutuhan untuk melengkapi penjualan perangkat keras. Sistem BIOS modern dikenal sebagian besar ditulis dalam bahasa C dan / atau rakitan. Perpindahan ke alat lain akan menambah biaya signifikan pada apa yang umumnya dianggap sebagai produk komoditas yang dapat sangat mempengaruhi penjualan. Tanpa masuk ke Economics 101, saya dapat meyakinkan Anda bahwa mungkin tidak layak bagi OEM untuk menyimpang dari alat yang sudah terbukti benar yang telah terbukti selama beberapa dekade.
Tentu saja ada dan akan menjadi proyek hobi untuk menulis BIOS juga. Ini juga, sejauh ini, tampaknya memilih C dan / atau perakitan. Mungkin suatu hari teknologi lain akan digunakan. Tapi hari ini, pilihannya jelas.