[英]16 bit C code for real mode kernel
我不知道如何为 16 位实模式编译我的 C kernel。 我尝试了各种编译器,但都没有运气。 我的引导加载程序只是将原始扇区从软盘(我的 kernel 就在磁盘上的第一个扇区之后)加载到物理 memory 地址 1000h:0000h 然后跳转到它。 如何编译我的 C kernel 以在 16 位实模式下工作?
我的基本 kernel:
void OSmain()
{
unsigned char *videoram = (unsigned char *) 0xb8000;
videoram[0] = 65; /* character 'A' */
videoram[1] = 0x07; /* forground, background color. */
while( 0 )
{
}
}
我尝试过的编译器是 GCC、tinyCC 和 DMC。 我的目标是获得一个可以跳转以开始执行的平面二进制文件。
首先,我建议您查看OSDev Wiki ,其中包含用于开发您自己的操作系统和组件的资源。
其次,您是否考虑过在汇编中编写引导加载程序,以实模式启动,切换到保护模式,然后跳转到(32 位)编译的 kernel?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.