我不知道如何为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。 我的目标是得到一个平坦的二进制文件,我可以跳转到开始执行。
首先,我建议您查看OSDev Wiki ,它拥有用于开发您自己的操作系统和组件的资源。
其次,您是否考虑在程序集中编写一个以实模式启动,切换到保护模式, 然后跳转到(32位)编译内核的引导加载程序?
以上就是c/c++开发分享实模式内核的16位C代码相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/544792.html