Bit to OS
Appearance
Bit to OS is my project to build an operating system by starting almost at ground zero - the humble bit (binary digit). We're not going quite as far back as logic gates and electricity but a little bit above.
This is all for education and curiosity sake (so don't expect it to be usable) and I'll be documenting the progress here.
What I'm building
- x86 system emulator (kind of) - this will be simplified and won't be fast but will be complete - and have full and easy to use debugging tools. This will start in 16-bit real mode and scale all the way up to 64-bit. Eep!
- BIOS - whilst modern systems have moved onto UEFI I'm going to pretend I've jumped into a time machine and flown back a couple of centuries. I've struggled with the BIOS which already exist so rolling my own minimalistic version which will enable us to support legacy boot.
- Assembler - I'm not going to lie - I am not a fan of Intel syntax assembly which is the type the GCC support, I find it un-necessarily confusing compared to NASM (Netwide Assembler) which is much clearer. Unfortunately using GCC means you have to use their assembler in the C code. So purely as a way of getting away from this I'm rolling my own assembler which will support NASM syntax.
- Compiler - Which brings us onto the next thing - if the main reason for rolling an assembler is to get away from intel syntax we're also going to have to do the same for compiler. So I won't be using GCC here either and I'll be rolling my own compiler and this compiler will support using our assembler. Goodbye Intel syntax :) And hello understanding how the tool chain works. Win - Win!
- Linker et all - of course this also means we'll need to write a linker too and all the other programs needed by the toolchain as we need them
- Bootloader (multiboot compliant) - we'll then step up into writing a bootloader which will load our
- Operating System which will be able to run our
- User space programs
Wow, that's a lot but in doing so we will understand computers deeply and in the right order from architecture through the tool chain to the operating system and then user space programs. We'll understand the full and complete stack!