免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 978 | 回复: 0
打印 上一主题 下一主题

解读Linux内核(V0.11)——1. Head.s [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-25 16:51 |只看该作者 |倒序浏览
解读Linux内核(V0.11)——1. Head.s

从head.s开始内核程序开始,前面的bootsect.s和setup.s属于bootloader的功能,严格来说不属于内核的范畴。所以我们从Head.s开始内核的解读。

进入Head.s,已经进入32位的保护模式,head.s采用的是AT&T汇编语言格式(由as和ld进行编译和链接),其实现在的GNU编译器已经可以编译32为和16位的代码,所以bootsect.s和setup.s完全可以采用AT&T汇编编写,而不用在采用另外的8086汇编语言编写。

这段程序的处于内存绝对地址0开始的地方,主要功能有:
1.         重新设置idt
2.         重新设置gdt
3.         检查A20地址线是否打开
4.         检查是否含有数学协处理器
5.         设置内存的分页处理机制,页目录表放在绝对地址0处,然后是4个页表项。
6.         通过Ret操作进入main.c程序入口进行执行。在32位状态下,(EIP)(),也就是把main函数地址传递给EIP,因此,下一步是执行main()函数啦!系统开始进入C语言编码时代,我们熟悉的C语言来了。

在阅读这些代码的时候,有可能需要一些关于描述表的知识,下面有一张图:
[/url]



本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u1/40968/showart_346567.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP