实模式内核的16位C代码

时间:2011-07-16 22:08:20

标签: c compiler-construction kernel 16-bit real-mode

我不知道如何为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。我的目标是得到一个平坦的二进制文件,我可以跳转到开始执行。

1 个答案:

答案 0 :(得分:3)

首先,我建议你查看OSDev Wiki,它有资源来开发你自己的操作系统和组件。

其次,您是否考虑在程序集中编写一个以实模式启动,切换到保护模式,然后跳转到(32位)编译内核的引导加载程序?