Sunday, 3 October 2010

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