Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530782
  • 博文数量: 118
  • 博客积分: 3995
  • 博客等级: 中校
  • 技术积分: 1276
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-15 12:15
文章分类

全部博文(118)

文章存档

2014年(1)

2013年(1)

2010年(6)

2009年(27)

2008年(10)

2007年(33)

2006年(38)

2005年(2)

我的朋友

分类: LINUX

2009-02-20 00:19:00

boot/boot.S的代码比较简洁,比起当初看主引导扇区的反汇编代码好多了,结构清晰,大量地使用了宏(inc/mmu.h中定义的有关gdt的一些初始化操作),这段代码(boot.S)就干了不几件事:打开A20(使其可使用1MB以上的地址空间);初始化一个临时使用的gdt,然后跳转到保护模式;调用boot/main.c里的初始化函数bootmain。

在设置临时gdt的时候,把基地址设置为0,偏移地址为下一条指令的物理地址(实模式下地址0:7c32),跳转后,mmu在进行地址转换的使用段基地址0加上偏移7c32,也得到物理地址7c32;这样就可以接着执行下一条指令了。

可以根据obj/boot/boot.asm文件来跟踪或者找到要执行命令的物理地址

阅读(921) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~