Re: Language Made Just For Developing Kernels
Posted: Thu Nov 12, 2009 10:29 am
My main idea behind 'arch' is that it includes code for all architecture families you specify. That is, if you want your binary to support SSE3 and have fallback support for SSE2/SSE1 it would include that code, and determine which set of code to run through the use of CPUID. Of course this would take some tweaking and optimization to get it to work just right, but I find such a thing to be quite beneficial.
About JIT compiling, I have mixed views on this atm. I actually think such a thing would be great for OS dev. (Now just hear me out for a moment!) Make one single binary that loads up through a set of loader binaries, and you have the whole OS running on whatever platforms the loader binaries can load up. You have to put in the right amount of optimizations, and for a kernel you would find it more beneficial to build the whole thing in one go, or in a set of segments. You could then have device drivers work in a similar manner, or be built for just the target language.
I said it'd be great, but I don't think it'd be the best thing to do. I believe it's a practical solution to multi-platform support though, at least for the kernel. Time is everything though, so is the development time for all of the support for just making the kernel load worth it?
Cheers,
-naota
About JIT compiling, I have mixed views on this atm. I actually think such a thing would be great for OS dev. (Now just hear me out for a moment!) Make one single binary that loads up through a set of loader binaries, and you have the whole OS running on whatever platforms the loader binaries can load up. You have to put in the right amount of optimizations, and for a kernel you would find it more beneficial to build the whole thing in one go, or in a set of segments. You could then have device drivers work in a similar manner, or be built for just the target language.
Code: Select all
bootloader (x86_64)
> kernel image
> modules
> run kernel
kernel image:
built into kernel (x86_64) at 1st megabyte in memory
modules:
appended to end of kernel
Cheers,
-naota