设为首页 加入收藏

TOP

Linux 2.4.0 内核bootsect.S文件完全注释
2014-11-24 13:02:41 来源: 作者: 【 】 浏览:0
Tags:Linux 2.4.0 内核 bootsect.S 文件 完全 注释

说明一下,这里省略了一些print信息,目的是为了使代码短一些,而且print信息的代码都很简单,大家有兴趣可以自己读一下。


#include /* for CONFIG_ROOT_RDONLY */


#include


// 我把这些宏的定义都列在下面了。


SETUPSECS =4 /* default nr ofsetup-sectors */


BOOTSEG =0x07C0 /* original address ofboot-sector */


INITSEG =0x9000 /* we move boot here - out of theway */


SETUPSEG =0x9020 /* setup starts here */


SYSSEG =0x10000 /* system loadedat 0x10000 (65536) */


SYSSIZE =0x7F00 /* system size: # of16-byte clicks */


/* to be loaded */


ROOT_DEV =0 /* ROOT_DEV is nowwritten by "build" */


SWAP_DEV =0 /* SWAP_DEV is nowwritten by "build" */



#ifndef SVGA_MODE


#define SVGA_MODE ASK_VGA


#endif



#ifndef RAMDISK


#define RAMDISK 0


#endif



#ifndef CONFIG_ROOT_RDONLY


#define CONFIG_ROOT_RDONLY 1


#endif


// 在此这上的部分,是不会出现在编译运行的二进制中的,这一部分内容只是汇编器所需要的信息



//下面是真正运行的代码了


.code16 // 表示下面的代码运行在16位模式下


.text



.global _start //global标签的意思是让链接器可以看到_start符号。


_start:


/* section 1的内容很简单,开机上电bios会把启动设备的一个扇区,加载到0x0:0x7c00


* 即BOOTSEG,并跳转到这里执行,然后程序会把自己搬运到0x:0x9000,如何搬?下面的* 代码很简单,不说了!为什么搬?最好的解释是,这块内存后面会挪作他用。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Struts2实现同时多文件上传 下一篇Nginx情景分析之配置文件解析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)