全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux

         看了几段汇编代码文件,的确是有点头大。虽然,花时间还是可以看得懂,但是我觉得这么古老的硬件继续学习下去意义也不是很大。姑且,把这几个汇编文件当做故事来看看吧,对于现在的Linux开发者来说,相信他们也不会需要过多的时间来做这个。他们所做的工作,应该更加集中于C代码相关的工作吧。而这个,也是我真正感兴趣想要深入看看的地方。

497_linux内核学习_setup.S代码略读_Linux

         这段代码主要是从BIOS获取数据,然后存储到合适的位置。其实跟之前分析的bootsect的代码有一定的一致性,主要是把OS加载到原来的bootsect的所在位置。

497_linux内核学习_setup.S代码略读_Linux_02

         这个分段,之前的代码文件分析也有类似的信息。

497_linux内核学习_setup.S代码略读_Linux_03

         接下来,其实就是一堆流水账了。首先,设置了光标位置。接着,或许扩展RAM,检查显示器的类型,再往下就是读取并且保存光标位置。

497_linux内核学习_setup.S代码略读_Linux_04

         继续流水账,首先获取显卡的信息,接着获取磁盘信息,之后检查是否存在第二块硬盘。

497_linux内核学习_setup.S代码略读_Linux_05

         还是流水账,进入保护模式,关掉中断。之后,系统的相关段处理,并在处理之后,开启A20的地址线以便能够访问1M以上的内存。

497_linux内核学习_setup.S代码略读_Linux_06

         这里也看到了大神当年的一些无聊的吐槽了,这种编程给人的感觉也是有点逍遥之感。在这段代码中,吐槽了一下IBM的做法,同时提到了一点都没意思的8259A芯片编程。说起来,我大学的时候也玩过这样的芯片编程,但是我真是一点都没整懂。

497_linux内核学习_setup.S代码略读_Linux_07

         看起来,上面的这些准备工作大神也是不是很感兴趣的。对于进入“真正”的工作还是很期待的。

497_linux内核学习_setup.S代码略读_Linux_08

         接下来,检查键盘的状态。

497_linux内核学习_setup.S代码略读_Linux_09

         这一大堆都是检查显卡的类型,我略过一部分。

497_linux内核学习_setup.S代码略读_Linux_10

         这里还是上面一大堆显卡检查的继续,但是这里提到了大神的显卡说明书与实际使用不一致导致他疑惑的情况。也是蛮有意思的,看起来,大神当年还是遇到了一点“玄学”问题的。

         再往下基本都是一些辅助的“子函数”,同时做一些段处理的收尾工作。