Software Archive
Read-only legacy content

In what programming language BIOS is written and what languages are used to create firmware?

Dmitri_C_1
Beginner
3,381 Views

Hello,

i'm preparing a school course about Programming Languages and with your help hope to understand what programming languages are used to create firmware and BIOS in particular. In the internet there are many articles about this argument, but none with references to some official documentation - all these articles seems some of point of view of the person who wrote it...

Please help me understand :

1) in what programming language is created BIOS (the first software executed when PC starts) (programming language of legacy BIOS and modern BIOS) ?

2) what programming languages are used to create firmware ?

3) where can i find some good guide/documentation about this arguments ?

Thank you in advance!

Have a nice day,

Dmitri.

0 Kudos
1 Solution
Jarlstrom_Intel
Employee
3,381 Views

Hi Dmitri,

1) in what programming language is created BIOS (the first software executed when PC starts) (programming language of legacy BIOS and modern BIOS) ?

Answer: Legacy as well a UEFI (modern BIOS) will start at the reset vector in assembly language. For Intel IA32 and X64 this is in 16 bit, segment - offset mode and starts at the address: 0xffff:0000.  For the UEFI BIOS, this mode is quickly changed to 32 bit flat address mode and then jumps into source code that is in "C" programming language.

2) what programming languages are used to create firmware ?

Answer: Most of the UEFI BIOS is in "C"

3) where can i find some good guide/documentation about this arguments ?

Answer: For the UEFI BIOS please start with the http://tianocore.org where there are many wiki pages and documentation about the UEFI and EDK II BIOS. The following on-line training is recommended: https://github.com/tianocore/tianocore.github.io/wiki/UEFI%20EDKII%20Learning%20Dev.  Lessons 0-5 walk through the UEFI Spec.

Another resource is http://firmware.intel.com

View solution in original post

0 Kudos
4 Replies
Jarlstrom_Intel
Employee
3,382 Views

Hi Dmitri,

1) in what programming language is created BIOS (the first software executed when PC starts) (programming language of legacy BIOS and modern BIOS) ?

Answer: Legacy as well a UEFI (modern BIOS) will start at the reset vector in assembly language. For Intel IA32 and X64 this is in 16 bit, segment - offset mode and starts at the address: 0xffff:0000.  For the UEFI BIOS, this mode is quickly changed to 32 bit flat address mode and then jumps into source code that is in "C" programming language.

2) what programming languages are used to create firmware ?

Answer: Most of the UEFI BIOS is in "C"

3) where can i find some good guide/documentation about this arguments ?

Answer: For the UEFI BIOS please start with the http://tianocore.org where there are many wiki pages and documentation about the UEFI and EDK II BIOS. The following on-line training is recommended: https://github.com/tianocore/tianocore.github.io/wiki/UEFI%20EDKII%20Learning%20Dev.  Lessons 0-5 walk through the UEFI Spec.

Another resource is http://firmware.intel.com

0 Kudos
Dmitri_C_1
Beginner
3,381 Views

Hello LAURIE,

thank you very-very much for so exhaustive and precise response !!! :)

Thank you again !
Have a nice day, 

Dmitri.

0 Kudos
Dmitri_C_1
Beginner
3,381 Views

Hello LAURIE,

just to be secure to understand... Can I deduct from your answer that :

1) Legacy BIOS is written in assembly language

2) and UEFI BIOS is written in "C"

?

Thank you !!!

Dmitri.

0 Kudos
Jarlstrom_Intel
Employee
3,381 Views

Hi Dmitri,

Yes, for the most part legacy BIOS for Intel Architecture is written in assembly language and  the UEFI BIOS is mostly written in "C" programming language.

0 Kudos
Reply