我不知道如何为16位实模式编译我的C内核。我尝试了各种编译器,但都没有成功。我的引导加载程序只是从软盘中加载原始扇区(我的内核位于磁盘的第一个扇区之后)到物理内存地址1000h:0000h,然后跳转到该地址。如何编译我的C内核以在16位实模式下工作?
我的基本内核:
void OSmain()
{
unsigned char *videoram = (unsigned char *) 0xb8000;
videoram[0] = 65; /* character 'A' */
videoram[1] = 0x07; /* forground, background color. */
while( 0 )
{
}
}
我尝试过的编译器包括GCC、tinyCC和DMC。我的目标是得到一个扁平的二进制文件,我可以跳转到该文件开始执行。