Beginning at the basics is 1
and 0
. You need to know what instructions your processor supports and what registers and cache, etc. exist. Then it would be handy to write a little assembler compiler in machine code (for readable 1
and 0
). If you have that, you can write the first real compiler for a simple higher language, and so on (each built using a lower-level "language"). You should know, though, that creating a simple operating system can take years of planning and even more time to develop, debug, etc. (and all this before you can even think of seeing something useful on the screen). And that operating system won't be able to run on any other processor than yours. Then you need drivers, etc for every single bit of hardware. And there are many steps to go from here. Beginning at the level of 1
and 0
is not very rewarding, since you won't see anything of it for a very long time. Simply don't.