Teoride kişi BIOS'u herhangi bir dilde yazabiliyor olsa da, modern gerçeklik çoğu BIOS'un Assembly, C veya ikisinin bir kombinasyonu kullanılarak yazılmasıdır .
BIOS , fiziksel donanım makinesi tarafından anlaşılan makine kodunu derleyebilecek bir dilde yazılmalıdır . Bu, BIOS yazımı için uygun olan, doğrudan veya orta sözlü çeviri dillerini (Perl, Python, PHP, Ruby, Java, C #, JavaScript vb.) Ortadan kaldırır. (Teoride, biri bu dilden birini doğrudan statik makine koduna derlemek için uygulayabilir veya diğeri tercümanı BIOS'a yerleştirebilir. Örneğin, Java için terkedilmiş GCJ projesi vardır .)
Çoğu OEM, Amerikan Megatrends ve Phoenix Techologies gibi şirketler tarafından verilen özel, genel BIOS uygulamalarını genişleterek bir BIOS kullanıyor . (Muhtemelen daha önce bir bilgisayarın ilk açılış ekranında bu şirketlerden birini görmüştünüz.) Bu uygulamaların kaynak kodu halka açık değil, ancak bir kısmı sızdırılmış. Buna doğrudan C ve derleme kaynak koduyla bağlantı kurmak istemiyorum, ancak internette göz atmak isteyenler için bu kaynak kodun tartışıldığı yerler var .
Bazı donanım üreticileri, yüksek performans ve oyun pazarlarını hedefleyenler gibi, BIOS uygulamalarını kişiselleştirme özellikleri, istatistikler ve tam uygulamaları için tasarlanmış çekici kullanıcı arayüzleriyle doyururlar. Bu özelliklerin çoğu, Amerikan Megatrends ve diğerleri tarafından üretilen jenerik ürünlerde sunulanların ötesine geçmektedir. Ne yazık ki, bu şirketler genellikle kaynak kodlarının yayımlanmasını bir güvenlik riski olarak görmektedir, bu üst seviye uygulamalar hakkında çok az şey bilinmektedir, çünkü bunlar hakkında çok az şey paylaşılmaktadır. Elbette böyle bir BIOS uygulamasına erişmek ve bunları derlemek için yollar bulabiliriz, ancak bunu yapmak zor ve muhtemelen yasa dışı olabilir.
Özgün soruya geri dönersek, yerel makine kodu üretme ihtiyacı nedeniyle, bir yerel makine kodu derleyici tarafından desteklenen bir programlama dilinde bir BIOS uygulanmalıdır . Bu tür birçok dil var ve son birkaç on yıldan beri emin olduğum halde, deneylerde birkaç dil kullanılmış olmasına rağmen, bulabildiğim her açık BIOS uygulaması özellikle C ve / veya montaj kombinasyonuna dayanıyor. Bu sonuca varmak için baktım açık kaynaklı BIOS uygulamaları içerir OpenBIOS , tinyBIOS , coreboot , Intel BIOS ve Libreboot. Ayrıca bugünle alakalı olmayan çok eski BIOS uygulamalarına da baktım, aynı zamanda C ve / veya montaj kuralına uydum.
Doğrudan donanımla etkileşimde bulunmak için oluşturulmuş diğer yazılımlara da bakmak gerektiğini düşünüyorum. Örneğin, Linux Çekirdeği , OS X çekirdeği ve Windows çekirdeğinin belirli görevler için bazı meclislerde ve bazı üst düzey dillerde büyük ölçüde C olduğunu biliyoruz . Biz de biliyoruz Linux üzerinde donanım sürücüleri ve Windows üzerinde donanım sürücüleri C. ölçüde yazılır
BIOS'a geri döndüğümde, seçilen programlama dilinin ekonomisini göz önünde bulundurmanın da önemli olduğunu düşünüyorum. BIOS genellikle donanım satışlarını tamamlamak için bir zorunluluk olarak yazılmıştır. Modern BIOS sistemlerinin büyük ölçüde C ve / veya montaj olarak yazıldığı bilinmektedir. Başka bir araca geçilmesi, genel olarak satışları olumsuz yönde etkileyebilecek emtia ürünleri olarak kabul edilenlere önemli maliyetler katacaktır. Ekonomi 101'e girmeden, on yıllardır kanıtlanmış denenmiş ve doğru araçlardan sapmanın muhtemelen bir OEM'e değmeyeceği konusunda sizi temin ederim.
Elbette BIOS'u yazmak için bir hobi projesi de var ve olacak. Bu da şimdiye kadar, C ve / veya montajı seçiyor gibi görünüyor. Belki bir gün başka teknolojiler kullanılacaktır. Ancak bugün, seçimi iyi tanımlanmıştır.