You may say that there are no 16bit C compilers or you don't know any of them. But what do you say if I tell you that GCC may compile 16bit C code? If you take a look at linux kernel source code there is a directory in "/arch/x86/boot" that all the code in there is only for real mode. So when we compile that kernel with GCC it should compile all the code in there and it should produce 16bit C code for the bootloader that is in real mode. But how is it possible? Please tell me if someone knows whats happening there or if I was wrong with this

