conscience wrote:I hope you already know that you in no way will get away without ASM as vital low level parts cannot be carried out otherwise.
Um, well, no. Unix, which most of us here would agree constitutes the making of some pretty damn good OS's, was written in the language C. Without ASM, they created Unix. So i'm gonna have to bash that post and say i disagree.
You can't load the GDT in C for example, mate. You also cannot inport/outport unless you first implement the ASM side of these rtl functions. The same goes for interrupts and basically the whole C RTL - you'll have to create those stuff in ASM first (type definitions not included of course) in order to use a higher level language no matter which one of the higher levels you choose. You need ASM for the bootloader also as pointed out by fash. The fact that Unix was written in C means that C was used on top of the basic, essential ASM stuff. So I'll have to duplicate that post and say that you in no way will get away without ASM as vital low level parts cannot be carried out otherwise.
-- Wed Jun 29, 2011 5:57 pm --
While I would agree with you 100% here, a little person in the back of my head is telling me that your partially wrong. While under normal circumstances, yes you need to know the language up, down, left, and right, if you know at least 3 (random number, as long as it's more than 1) languages up, down, left, and right, you should be fine. As long as the syntax's aren't too different (i.e. Python and C would be too different, etc) you should be fine. Knowing 2 languages should make it to where you know enough about languages to do some OS Deving. And throughout the process, your going to be forced to know the languages so well that it doesn't really matter, all you need is a solid background in programming to start, regardless of the language.
Basically, you're right. However you'll have to be familiar with your compiler's guts and little tricks when it comes to tossing some ASM under the hood as well as accounting what designs are possible for example (like most compilers do not support 32bit segmented pmode; yep, for portability though, so it's a bad example but it's real).
Let him who has understanding recount the number of the beast, for it is a human number: His number is 0x029A.