![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
材大难为用
这个作者很懒,什么都没留下…
展开
-
自制操作系统(三)
今天就来完成到C语言的过度。首先说,映像永远是1440KB,按照软盘的格式来,就算你用了512字节的img,只有启动区,然后BIOS只从头开始检查,它的确可以执行,然后就执行了512字节的,然后完了,也不会出什么错误,但是最好还是1440KB的,因为剩下的整个系统都放在这里,把IPL制成了一个映像,然后再编写其他的脚本往映像里面添加就好了。但是,一般C语言程序都是32位程序,而BIOS是1...原创 2019-08-20 21:16:29 · 391 阅读 · 0 评论 -
自制操作系统(一)
从今天开始制作一个操作系统,今天完成最基本的功能---输出hello world。 计算机在读取磁盘的时候,首先从最初的一个扇区开始读盘,然后如果这最后2个字节不是55AA,计算机会认为这张盘上没有所需启动程序,就会报一个不能启动的错误,如果计算机确认了第一个扇区的最后两个字节正好是55AA,那么它认为这个扇区的开头是启动程序,并开始执行这个程序。 IPL,initial ...原创 2019-08-17 21:26:17 · 3653 阅读 · 0 评论 -
自制操作系统(二)
现在呢,大致流程写在下面: 首先,编写汇编代码,代码文件名为MyOS.asm,所有代码大致如下:; 下面是标准FAT12格式软盘专用代码DB 0xeb, 0x4e, 0x90DB "MyOS_IPL" ; 启动区名称,必须8字节DW 512 ; 每个扇区必须为512字节DB 1 ; 蔟必须为1个扇区DW 1 ; FAT的起始位置必须为1DB 2; FAT的个数必须...原创 2019-08-18 14:27:39 · 382 阅读 · 0 评论 -
自制操作系统(四)
这回说如何将C语言文件放入二进制映像中。我们不得不讲一下c编译器了,c编译器与汇编编译器不同,汇编编译器是直接将汇编代码编译成二进制可执行程序,而c编译器是首先将c语言编译器编译成汇编代码,然后再将汇编代码编译成一个二进制中间文件,然后再将这个二进制中间文件进行链接,就是多个中间文件组合到一起,最后形成一个中间文件。倘若这个c语言文件不依赖其他的c语言文件,就没什么链接一说了。首先声明几点:...原创 2019-08-26 10:37:56 · 511 阅读 · 0 评论 -
自制操作系统(五)
这一节要实现中断。 中断是有固定格式的,要顺应着CPU来,格式如下:typedef struct SEGMENT_DESCRIPTOR{ short limit_low, base_low; char base_mid, access_right; char limit_high, base_high;} SegmentDescriptor;...原创 2019-08-27 19:40:41 · 254 阅读 · 0 评论 -
自制操作系统(六)
这里写下几个注意点: 1. 按下ctrl键的时候,会产生两个字节的E0 1D,松开后,又会产生两个字节的E0 9D,在一次产生两个字节的情况下,因为键盘内部电路一次只能发送一个字节,所以一次按键就会产生两次中断。 2. 一次用两个sti,hlt函数未必比stihlt函数好,根据CPU的规范,机器语言的stl指令后,如果紧接着hlt指令,那么就暂不接受这两条指令之间的中断,而...原创 2019-09-03 15:14:34 · 264 阅读 · 0 评论