这部分只要写两行代码
我们最后一步,是加载app(即OS) 。
task2:以下任务点是在本节需要完成的:
把上一节保护模式部分搬过来。
填写bootMain函数。
切换前请commit来把task1的代码提交!!!
请在完成《开启保护模式》之后,在实验根目录命令行里输入,切换到本节的分支:
$ git checkout load-os
boot.c里面的bootMain函数的作用有如下两个:
把app.bin里面的内容读到0x8c00(在本实验我们这样规定,实际上不一定非是0x8c00)
跳转到0x8c00(Hint:使用内联汇编)
readSect函数是将第offset块磁盘读出,读到物理地址为dst的内存中。
exercise13:请阅读项目里的3个Makefile,解释一下根目录的Makefile文件里
cat bootloader/bootloader.bin app/app.bin > os.img
这行命令是什么意思。
exercise14:如果把app读到0x7c20,再跳转到这个地方可以吗?为什么?
如果你成功加载app,就可以看到下图。恭喜你,成功完成了实验!🎉🎉🎉
exercise15:最终的问题,请简述电脑从加电开始,到OS开始执行为止,计算机是如何运行的。
不用太详细,把每一部分是做什么的说清楚就好了。
Last updated 4 years ago