写在前面:
一直都在想写写学习博客。因为既然工作是和电脑打交道,用博客记录自然也是一件很顺其自然的。我是一个比较认可笔记这种形式的人。走马观花之后,要把好看的花带回家,这样才能心满意足。
本人是在读大学生,说实话计算机功底很薄,编程语言只是学过c和java,汇编还是在《微机原理》课上学的,很是不深入。但是既然是在学习,就不用怕自己不懂,因为不懂到懂才是学习的过程。写博客也是贯穿这个道理的。
这本《30天自制操作系统》是号称日本编程天才的川合秀实写的,但是说实话写的怎么样,还要看接下来的学习。
OK,进入正题。
第0天:最终的目标是编写一个编译后大小为80k的操作系统,拥有基本功能,图形操作界面。
从图上可以看见,对话框语言部分采用日语(略坑啊)。
开发的步骤:1.源代码 2.编译,生成机器语言 3.生成软盘映像文件 4.写入磁盘
软盘是不是比较坑啊?这年头谁还有那玩意儿?我想是不是可以用U盘代替一下?但是后来还是有问题,稍后再叙。
第一天:
首先作者就介绍了一个二进制编辑器(十六进制编辑器),这个工具本身没有任何问题。但是作者一上来就狠命地往里敲机器码是不是有点狠了?完全不知道那敲的啥意思啊!
但是你可以看到后面的hello-os,我只能懂到这了。
然后这个文件保存为hello.img,想必这个就是软盘映像文件了吧。
接下来,作者很贴心地为大家提供了 模拟器(QEMU) 这个东西。 有了这个模拟器,就暂时不用软盘,就可以运行刚才的映像文件了。拷贝!cons-9x.bat(或!cons_nt.bat)这个文件,再拷贝run.bat和instal.bat(.bat和.cmd都是批处理文件的后缀),然后打开,在命令行输入run,一个叫QEMU的免费pc模拟器就会自动运行(我现在还不明白那个模拟器存在哪里,因为我没有去下载,但是输入run之后就会自动运行)。结果:
接下来,作者可能很快意识到了直接敲机器代码太狠了,就给提供了汇编的源程序。作者提供了他自己编写的汇编语言编译器,叫nask(在文件夹z_tools中的nask.exe)。使用方法是,在!cons_nt.bat打开的console中输入指令:>..\z_tools\nask.exe helloos.nas helloos.img
也就是用nask.exe把helloos.nas编译成helloos.img。后来作者嫌麻烦,就把它做成了一个批处理文件,叫asm.bat。 接下来再编译时只用输命令:asm就行。但是作者的汇编语言有个大坑,你拿masm的编辑器打开或者拿记事本打开,注释行全是乱码。
这样的显示是不是有点坑?后来在用作者日版推荐的文档编辑器打开你就知道,这全是日语。
上文中的汇编依旧很难理解,只用到像DB,DW,RESB 类的命令。RESB(reserve byte :预留了n字节,自动填充0x00),跟机器码差不太多。
后来作者终于给出了像样的有逻辑的汇编源程序,但是很不幸通篇都在讲磁盘,我想我是不是应该先研究一下磁盘?因此,看的还是迷迷瞪瞪的。程序中的美元符号:$,意为当前偏移地址,老师没教过。
文章末尾解释n个术语,希望再写第二天的时候,我已经搞懂了。
ok,第一天的笔记,收工!