ucore-project1: boot(1)

改了一下Makefile,可以看到编译命令了(很简单,把变量V定义成空就可以了。。。)

这个project很简单,就是把cpu内存初始化一下,然后直接端口IO的方式在屏幕上打印helloworld。

看了bootasm.S和bootmain.c,他们主要做这些事儿:

先看bootmain.c,就是通过in/out指令,把helloworld在屏幕上打印出来。打印的入口函数式bootmain,由bootasm.S中的汇编代码跳入。

bootasm.S中的代码首先从0x7C00开始执行,此时bios刚刚自检完,将启动盘的第一个扇区(512字节)拷贝到0x7C00处,就是本代码,然后开始执行。此时cpu还处于real mode状态。这段代码要做的事儿,就是首先清中断、清方向,然后把A20地址线激活,切换到protected mode。在protected mode中设置好各个段寄存器和esp寄存器后,跳转到bootmain。

编译这两个文件与gcc编译其他文件类似,但链接时有一点点不同:通过-Ttext 7C00指定代码段的开始地址。

扫描二维码关注公众号,回复: 1324981 查看本文章

代码很简单,明天把这些代码重新写一遍,多试试,熟悉一下。

PS:刚刚在弯曲评论看了陈首席怀临,居然在去年来了华为,不知道他老人间现在是否仍在华为?微博上加了,刚刚看到给华为朱波会了一条微博,看样子应该还在华为美研所?

再PS:搜索陈怀临消息的时候,才知道很多大牛都来了华为,看来华为还是有希望的:)

猜你喜欢

转载自spartan1.iteye.com/blog/1266464
今日推荐