【1】--《30天自制操作系统》读书笔记--0~3天

时间:2021-01-23 05:54:39

本文就自己在阅读该书时候的思路和其中的一些疑惑进行了整理。

注:每天的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、然后理解下软盘的扇区等知识。