本文就自己在阅读该书时候的思路和其中的一些疑惑进行了整理。
注:每天的1标题表示梳理该章节脉络
每天的2标题表示遇到的问题及解决
第0天
2.1、比较感兴趣书上第5页,关于第一个操作系统是怎么产生的这个问题,作者的解释,想去核实一下。
2.2、作者对于gcc的优化,不太了解,这算是一个黑盒子,有待以后再去了解,姑且放一边。
2.3、里面的汇编是基于x86的cpu,里面的bios也是有规定的,是intel的,后面几天会有更深入的体会。
第1天
1.1、先是尝试自己写一个二进制镜像文件,然后介绍了tolset工具组,然后如何在软盘中制作启动盘,或者在模拟器中运行。
1.2、再介绍计算机与程序的基本概念
1.3、再nask汇编器,自己写汇编代码,介绍点基本的语法
1.4、再用更像汇编的语法编写程序,最后实现的功能和上面一样,介绍相应的语法和术语。
2.1、直接写二进制的操作,很逗
2.2、是不是要学习下nask这个汇编器?里面支持哪个指令集?
2.3、关于windows下的批处理文件,其格式还不了解。
2.4、24-25页的代码的理解,语句倒是没问题,问题是这样直接类似于往里面写数字就可以?没有什么要求?如第一句,直接写在img文件的最开始位置即可?
参考网页http://www.360doc.com/content/12/0802/03/532901_227763100.shtml
可以理解为:软盘的第一个扇区有512个byte,第一个即扇区0为引导扇区,里面有配置信息,如何配置参考网页,而书24页的钱3个字节应该是网页上jump指令的二进制码,参考x86的指令集。
其中,RESB 18对应于网页上的:引导代码及其他这一列,里面有大量的空间。
书上的程序主题不知道何意?
最后信息显示部分的DB 0x55,0xaa则是第一个扇区的结尾了,即512个byte处了。另外,结尾为55aa,表示盘上有所需的启动程序。
末尾一句RESB 1469432将软盘剩余的部分全部填0,整张盘就全部初始化了。
关于后面3个部分,不甚了解,有没有什么格式要求?其二进制编码有什么含义?
第2天
1.1、首先将前面的傻叉程序换成了一样的用汇编写的程序,然后分析,主要是涉及到一些x86的指令,还有内存的知识,其中里面涉及到了bios中的一些函数(网页是日文的)
1.2、然后采用make文件,优化了生成镜像的过程
1.3、再介绍makefile文件以及相应的操作。
2.1、29页的程序,里面是用汇编写的。诸如AX SS SP DS ES 都是x86中的一些sfr。可以参考网页http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html
里面有相应的介绍。结合书后面的讲解不难理解。
2.2、38页里面的bios函数的调用,可以参考bios的百度和http://wenku.baidu.com/link?url=U-iM_1w6vBlMO_DIZBFFbMNCo1kepNeICukO2435y5tS7WTvkfKdhWONld-Mv-G4Mmd9n9SEq4a4LNt4tCQdE0-YjaI3gCSt7qeejazjf1G点击打开链接
可以初步理解为bios相当于将底层封装好,留出api的函数吧。
值得注意的是,msg部分还是采用这种db的脑残方式。
2.3、关于内存中的分布,参考网页http://hi.baidu.com/w4ngqw/item/ff8153f090e563d7a835a24c,里面的图有说。
表明,启动区中有这个显示函数。对这个很乖的汇编函数,还是不了解,那个扇区的初始化是在那一部分呢?在内存中有么?看列表文件有这个初始化。
2.4、这个makefile和linux比较像,但是语法不同。
第3天
1.1、制作真正的ipl,首先修改程序,不是原来的显示hello world了,而是读盘,柱面号、磁头号、扇区号、磁盘号等。
1.2、然后理解下软盘的扇区等知识。