Linux0.11内核源代码(1)

本文介绍了Linux 0.11内核源代码中的boot目录下bootsect、setup和head文件的作用。bootsect用于检测磁盘参数并加载setup,setup则将system复制到内存并转移到系统起始位置。代码分析涉及汇编语言,如汇编器的使用、段寄存器设置、堆栈指针配置以及磁盘读取过程。
摘要由CSDN通过智能技术生成
SYSSIZE = 0x3000
SETUPLEN = 4				! nr of setup-sectors
BOOTSEG  = 0x07c0			! original address of boot-sector
INITSEG  = 0x9000			! we move boot here - out of the way
SETUPSEG = 0x9020			! setup starts here
SYSSEG   = 0x1000			! system loaded at 0x10000 (65536).
ENDSEG   = SYSSEG + SYSSIZE		! where to stop loading
ROOT_DEV = 0x306

在进行分析代码之前,需要注意的是boot文件夹中,bootsect和head中的汇编是基于intel汇编格式,而setup则是基于AT&T汇编语言。这也就是为什么在Makefile中存在两种汇编器。前者用于编译16位的汇编代码,用as86和ld86进行编译;而后者则已经进入到32位代码下面运行,利用as和ld进行编译。boot文件夹中存在这三个文件,其中bootsect和setup分别编译成单独的二进制单元,而head则和后面的C文件链接到system中。根据下面图可以知道boot文件夹里面三个文件的用处。bootsect部分主要用于检测磁盘参数并加载setup文件,而setup文件则将system整体复制到内存,并将system转移到系统的起始内存。这样分两步可以避免将BIOS提供的中断服务给覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值