`
spartan1
  • 浏览: 360616 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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指定代码段的开始地址。

 

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

 

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

 

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics