https://www.myziyuan.com/
- 网站模板素材下载
- C语言当然是一个书面操作系统,但操作系统的写作通常不仅用C语言编写。写作操作系统要求编程语言提供以下特征:1。跨平台,不能仅在平台下编译(VB不可用); 2,必须是编译语言(PHP不可用),或者有一个非常有效的翻译; 3,必须方便运行硬件功能,易于嵌入合同(Java不行); 4,兼容性好,最好编译由不同编译器编译的符号,易于链接(C ++不能给出C ++基本可以是可能的); 5,编译器本身最好是由语言完成的(大多数语言编译器都是令人写的C / C ++十个); 6,开发人员可以非常方便扩展,转换或使用第三方运行库(大多数语言库无法修改); 7.有许多开发人员(小语言不起作用); 8,这种语言开发操作系统的语言足够完美。所以,总结,C语言是第一个选择。
- 2021-09-01 12:33:27
- 黑客帝国
- 1.建立开发环境这一步很简单。 MASM613和VC15的压缩包被解压缩到E:MASM615和E:MSVC15目录。您还可以将其放在其他目录中,具体取决于您的情况,但需要修改以下编译命令。需要添加或修改任何环境变量。 2. IBM PC的开始和当时内存使用的部分已经谈到了旧生活,但它不能说出来。我们只从硬盘引导中说。当BIOS通过帖子时(测试自拍电源),将硬盘MBR读取到内存0x0000:0x7c00的位置,然后从此开始。通常,MBR将选择活动分区以启动操作系统。当MBR开始时,内存使用情况显示在图中下面,地址数据由16岁的历史:这已经是旧头发的内容,但它在20年前非常受欢迎。如果您想了解更多关于此信息,请查找本书来解释DOS。我们自己的操作系统将加载到0x1000:0x0100。这不是必需的或不可避免的,它是人类选择,也可以将它放在其他地方,如0x4321:1234。但是,在图中,存在一个与其他用途的存储区,否则你会后悔的。 3.开发操作系统我们自己的操作系统在真实模式环境中运行(如果您不知道什么是真实模式,请参阅20年前发布的非常受欢迎的书籍,或者当时直接询问老年人)。即使您的计算机是P4 CPU,刚刚以高频为8086启动。但是,没有任何关系。首先,使用汇编语言编写框架,文件名是条目:;;进入。版权所有(c)2004年,田祥源; .Model Tiny,C.386POPTION EXPR32OPTION CASEMAP:NONECMAIN PROTO附近C.Codeorg 0100H; off move address_start:jmp beginnopdb'tianxiangyuan',0;我的欧洲织造术的魔力:Climov Ax,CSMov DS,AXMOV ES,AXMOV SS,AXMOV SP,0FFFHSTICALL CMAIN;呼叫主函数MOV AX,4C00H由C语言编写;致电DOS(用于调试),我们自己的操作系统都没有int 21h这个代码很简单,应该没有问题。有人说,操作系统将从0x1000:0x0100加载,说这是无意的,但它很感兴趣。我们知道微小模式程序在DOS中运行,它的起始地址是0x0100,前部256byte是参数部分。如果您将操作系统直接加载到0x1000:0x0100系统启动时,调试时非常麻烦。我们将其启动地址设置为0x0100,允许它在DOS下运行(这也是最终包括程序的原因),在确认正确的开发后。接下来,查看C语言代码,文件名是main.c:...静态void initshell(){} void cmain(){} void cmain(){initshell(); TermShell();}}作为名称建议,它实现了一个简单的shell。因为程序本身是操作系统的一部分,我们中的一些人经常使用一些C Ligrary,它不能在这里使用。简而言之,一切都必须实施。幸运的是,在实模式下,几乎所有的设备DRIVers包含在BIOS中,我们可以直接使用它们。否则,即使您从键盘上读取键值,您也需要自己的驱动程序来编写键盘,这太难了。这也是原因,我们自己的操作系统不会将CPU转到保护模式,而有自己的心脏可以尝试的人。以下内容几乎可以使用C语言实现。首先,初始化显示模式。当系统启动时,图形卡已被初始化为3模式,这是80x25的颜色模式(除非您的显示器是单色显示),我们不需要其他任何东西。当然,您还可以将图形卡设置为VGA甚至SVGA模式,只要您的BIOS和显卡支持。其次,使用简单的交互功能实现shell。代码是不完整的,请补充自己或查看附件。 / **从键盘上读取一个字符,等待输入,等待;返回值的低字节是ASII代码,高字节是键盘扫描代码* / static int getch(){int chr = 0; __ asm {mov啊,00hint 16hmov chr,ax} return chr;} / **使用tty模式输出字符* /静态void putch(unsigned char键){__asm {mov bh,0mov al,keymov啊,0ehint 10h #define key_backspace 0x08#define key_enter 0x0d#define key_newline 0x0a#define key_escape 0x1bstatic int printk(const char * str,......){...... //给我们一些空间,实现自己的权利}静态void endline(){PUTCH(KEY_NEWLINE); //线饲料(LF)PUTCH(KEY_ENTER); //输入(cr)}静态char msg_prompt [] =“cmd:”;静止无效Eal_cmd(char * cmd_line,int cmd_len){... //请自己实施它,例如,您可以实现帮助,dir,cls,halt ... //实际上的命令,串比较}静态void termshell(){char cmd_line [80] = {0,}; int cmd_len = 0;终点();打印(msg_prompt); for(;;){cmd_line [cmd_len] = getch();切换(cmd_line [cmd_len]){case key_enter:if(cmd_len> 1)deal_cmd(cmd_line,cmd_len); // 休息; case key_escape:cmd_len = 0;终点();打印(msg_prompt,sizeof(msg_prompt));休息; case key_backspace:if(cmd_len> 0){putch(0x08); PUTCH(''); PUTCH(0x08); cmd_len - ;}突破;默认值:PUTCH(cmd_line [cmd_len]); cmd_len ++;}}}}}更复杂,更强大的方法,请参阅BIOS的相关文档。也请k你可以发挥想象力,不断扩大。说到我的心,这个“操作系统”仍然是原创的!但毕竟,它是您自己的操作系统。
- 2021-09-01 12:31:39
- zaijianshaoshi
- 一个人编写一个操作系统是什么概念,一个人写一个简单的操作系统内核是一件非常帅气并且可行的事情。如果缺乏能力/计划,推荐《30 天自制操作系统》,或者相关链接
- 2021-09-01 12:31:39