Podczas gdy teoretycznie można pisać BIOS w dowolnym języku, współczesna rzeczywistość jest taka, że większość BIOS-u jest pisana przy użyciu Asemblera, C lub ich kombinacji .
BIOS musi być napisany w języku, który można skompilować z kodem maszynowym , zrozumiałym dla fizycznego komputera sprzętowego. Eliminuje to języki interpretowane bezpośrednio lub pośrednio (Perl, Python, PHP, Ruby, Java, C #, JavaScript itp.) Jako odpowiednie do pisania BIOS-u. (Chociaż teoretycznie można zaimplementować jeden z tych języków w celu kompilacji bezpośrednio do statycznego kodu maszynowego lub w jakiś sposób osadzić interpreter w systemie BIOS. Istnieje na przykład projekt GCJ w Javie dla porzuconego oprogramowania ).
Większość producentów OEM wdraża system BIOS, rozszerzając zastrzeżone, ogólne implementacje systemu BIOS przez firmy takie jak American Megatrends i Phoenix Techologies . (Prawdopodobnie wcześniej widziałeś jedną z tych firm na pierwszym ekranie rozruchowym komputera.) Kod źródłowy dla tych implementacji nie jest publicznie dostępny, ale niektóre z nich wyciekły. Nie chcę linkować tego bezpośrednio do kodu źródłowego C i asemblera, ale są miejsca w Internecie, w których ten kod źródłowy jest omawiany dla tych, którzy chcą zajrzeć.
Niektórzy producenci sprzętu, na przykład ci ukierunkowani na rynki o wysokiej wydajności i rynku gier, nasycają swoje wdrożenia BIOS funkcjami dostosowywania, statystykami i atrakcyjnymi interfejsami użytkownika zaprojektowanymi z myślą o ich dokładnych implementacjach. Wiele z tych funkcji wykracza poza to, co jest oferowane w ogólnych produktach wytwarzanych przez amerykańskie Megatrends i inne. Niestety, firmy te często postrzegają wydanie swojego kodu źródłowego jako zagrożenie dla bezpieczeństwa , więc niewiele wiadomo o tych zaawansowanych implementacjach, ponieważ niewiele się o nich mówi. Można oczywiście znaleźć sposoby na uzyskanie dostępu i dekompilację takich implementacji systemu BIOS, ale może to być trudne i być może nielegalne.
Wracając do pierwotnego pytania, z powodu potrzeby tworzenia natywnego kodu maszynowego, BIOS musiałby zostać zaimplementowany w języku programowania obsługiwanym przez natywny kompilator kodu maszynowego . Chociaż istnieje wiele takich języków i jestem pewien, że w ciągu ostatnich kilku dziesięcioleci, eksperymentowano z kilkoma językami, każda otwarta implementacja BIOS-u, którą udało mi się znaleźć, polega konkretnie na kombinacji C i / lub asemblera. Open-pozyskiwane implementacje BIOS Spojrzałem na tworząc ten wniosek obejmuje OpenBIOS , tinyBIOS , coreboot , Intel BIOS i Libreboot. Przyjrzałem się także niektórym bardzo starym implementacjom BIOS-u, które dziś nie są istotne, ale także przestrzegałem zasady C i / lub asemblera.
Wydaje mi się, że warto także spojrzeć na inne oprogramowanie stworzone do bezpośredniej interakcji ze sprzętem. Wiemy na przykład, że Linux Kernel The kernel OS X , a jądro systemu Windows są w dużej mierze C z jakimś zespołem i niektórych językach wyższego poziomu dla poszczególnych zadań. Wiemy również, że sterowniki sprzętowe w systemie Linux i sterowniki sprzętowe w systemie Windows są napisane głównie w C.
Wracając do BIOS-u, myślę, że ważne jest również rozważenie ekonomiki wybranego języka programowania. BIOS jest ogólnie pisany jako konieczność uzupełniania sprzedaży sprzętu. Wiadomo, że współczesne systemy BIOS są w dużej mierze napisane w C i / lub asemblerze. Przejście na inne narzędzie spowodowałoby znaczne koszty w odniesieniu do produktów powszechnie uważanych za towary, które mogłyby bardzo negatywnie wpłynąć na sprzedaż. Nie wchodząc w Economics 101, zapewniam cię, że producent OEM nie powinien odejść od wypróbowanych i sprawdzonych narzędzi, które zostały sprawdzone przez dziesięciolecia.
Oczywiście istnieją i będą hobbystyczne projekty pisania BIOS-u. Te też wydają się wybierać C i / lub montaż. Być może któregoś dnia zostaną wykorzystane inne technologie. Ale dzisiaj wybór jest dobrze określony.