In the particular case of the kernel, one of the most fundamental reasons why C++ isn't used is that the language relies upon "runtime libraries," which do not exist in the kernel's world. (There is no such thing as glibc there.)
Nevertheless, the kernel is implemented using a high-level language ("C") with inline assembly. Only a very few, generally boot-time and generally CPU-specific, routines are actually "asm" files.
If you peek into the architecture of a system like gcc which supports many languages, one thing is quite interesting: only the first few top-level stages of the compiler are actually "language specific." Once the source file has been processed, the internal data structures which actually drive the compiler are standardized such that it literally doesn't matter (much) what language the program was written in!
|