《30天自制操作系统》作者:川合秀实原著作者的官网:http://community.osdev.info/Bz1.62的下载地址:http://pan.baidu.com/s/1gdjCaOV 万事开头难,不知道从哪个地方开始。就从用到的第一个软件开始吧——Bz1.62(Binary Edito....
分类:
其他好文 时间:
2014-12-20 19:35:05
阅读次数:
219
最近在读《30天自制操作系统》这本书,在读到“从启动区加载操作系统”这一小节的时候卡住了,首先我的疑问是这样的:首先,磁盘映像文件img的0x2600这个地方存储着操作系统文件的名称(用二进制编辑器看),0x4200以后存储着操作系统的内容(执行代码),我们的启动区代码会被加载到内存的0x7c00这个位置,即0x7c00-0x7cff属于启动区代码所有,而书上说0x8000-0x81ff属于启动区...
分类:
其他好文 时间:
2014-11-30 21:34:23
阅读次数:
564
1、着手开发前 开发步骤 1.编写源代码 2.用编译器编译 3.生成软盘映像 4.将映像写入磁盘,做成启动盘。2、计算机结构到汇编程序入门3、汇编语言学习与Makefile入门4、进入32位模式并导入C语言5、C语言与画面显示的练习6、结构体、文字显示与GDT/IDT初始化7、分...
分类:
其他好文 时间:
2014-10-30 16:54:03
阅读次数:
167
这一节尽管题目是“制作窗体”,但实际上制作窗体仅仅需用像素画一个就可以,难点是因为增加了计数器,会出现闪烁的情况,这里就讲一下消除闪烁的做法。counter窗体在疯狂的计数,鼠标放在飞了的数字上,会出现闪烁,解决方法是:在每次画面的又一次绘制中,仅仅绘制counter所在的图层,让鼠标所在的图层不用...
这个连载是根据《30天自制操作系统》这本书所写只是类似于补充之类的东西,要详细的讲解,还请参照书上的内容所以,首先我们要感谢作者川合秀实先生!(鞠躬)为什么我想写这么一个补充的?因为这本书的所使用的软件,对于2014年来说,确实是有点旧了。但是如果不用川合先生的那些方便的工具,开发会变得很麻烦。所以...
分类:
其他好文 时间:
2014-09-14 00:00:06
阅读次数:
234
我们这次使用的汇编语言编译器是原书作者自己开发的,名为“nask”,很多语法和著名的汇编语言编译器nasm很像。
由于原书作者没有给出有哪些不同,这里就无法给出不同了!
现在仅仅使用汇编语言中的DB指令来写个“操作系统”吧。
分类:
其他好文 时间:
2014-09-09 21:30:19
阅读次数:
311
编写运行于x86实模式下的16位代码是一个很复古的话题,编写能在DOS下运行的Plain Binary可执行文件是一个更复古的话题。以往,凡是需要使用x86的16位实模式的时候,作者都喜欢那NASM来编程。比如《30天自制操作系统》、《Orange's 一个操作系统的实现》、《x86汇编语言——从实...
分类:
系统相关 时间:
2014-08-24 16:35:42
阅读次数:
422
梳理项目结构 项目做到现在, 前头的好多东西都忘了, 还是通过Makefile重新理解一下整个项目是如何编译的: 现在我们拥有这么9个文件: ipl10.nasInitialProgramLoader, 占用了软盘的第一个扇区并符合启动盘的规范, 默认被载入地址是0x7c00 到 0x7e00, 负...
分类:
其他好文 时间:
2014-08-22 12:28:26
阅读次数:
285
多任务的本质是利用定时器和far跳转在任务之间进行切换,具体来说,一开始先运行main函数(就是处理我们的鼠标、键盘和定时器等事件),0.02s后定时器超时,执行如下语句:
farjmp(0, 4 * 8);
这是一个far跳转,先看一下farjmp的实现:
_farjmp: ; void farjmp(int eip, int cs)
JMP FAR [ESP+4] ; eip, c...
分类:
其他好文 时间:
2014-08-15 16:07:30
阅读次数:
169
这一节我们同样只讲优化工作,关于缓冲区的优化。
我们为键盘、鼠标和定时器各维护了一个FIFO缓冲区,如果定时器有100个,我们要创建100个FIFO缓冲区。这是不优雅的。
FIFO缓冲区的作用:拿定时器1来说,我们怎样知道定时器1超时了。假设它的超时时间是10s,那么10s后,定时器1被告知超时,同时往它的FIFO缓冲区写入数据,这样在其他地方,我们只需查看它的FIFO缓冲区是否有数据,就知道...
分类:
其他好文 时间:
2014-08-10 18:41:44
阅读次数:
184