Well, after a day or two where I've been able to do a little reading between getting everything else done, I have made a few initial decisions; my first target is going to be little more than a bootloader and a small binary to produce a 'you have booted me' message. I shall probably write these both entirely in 16 bit assembler and might not even bother to switch out of 'real mode' since I do not wish, at that point, to do more than demonstrate to myself that I can correctly bootstrap the system into an operating system kernel.
My longer term goal, I have decided, is something known as an 'exo-kernel' - pretty much the very minimalist idea of what a kernel should comprise - which I shall write in native 64 bit (long mode with full 64 bit instructions on the AMD 64 platform). In a similar manner to Linus, I have chosen this because I wish to fully master the AMD 64 architecture, not worry about compatibility and complications of other architectures (especially earlier 'x86' ones) and I have ready and easy access to the architecture (this very laptop, somewhat old as it is and despite running a 32 bit Windows, is a Turion 64 X2 based PC - AMD 64 platform with the additional 'fun' of being multicore ;¬) ).
It probably helps that I have the full set of platform reference books, though they are from 2005, courtesy of AMD - they sent to me completely free, actually - which is a lot more convenient than an online database or PDF references, most of the time. Microsoft, take note: I'd actually pay for a proper reference to your OS APIs. We know you like to keep the NT native API somewhat hidden (also note that obscurity is not security) but an honest-to-god paper book detailing the function calls in Win32 and Win64 would be nice. Personally, I'd even be interested in the original 16 bit API, actually, to which I do have some reference material courtesy of an old Borland compiler purchase.
Anyway, that's where I am right now. I have FASM set up and I'm refreshing my knowledge of writing basic (FASM dialect) assembler and building binaries from it, soon I intend to start on a bootloader. Incidentally, FASM isn't just for the bootloader, the entire project (at least that is my intention for now) will be in assembler; it's just easier that way, to be honest.
No comments:
Post a Comment