设为首页 加入收藏

TOP

Linux0.11中的head.s代码分析(二)
2014-11-24 03:00:49 来源: 作者: 【 】 浏览:3
Tags:Linux0.11 head.s 代码 分析
eax
之后,每填好一项,物理地址值减去0x1000,每项的值减4个字节,直至物理地址小于0。
在设置好页目录表和页表后,就可以设置页目录基址寄存器CR3的值,指向页目录表。
xor1 %eax, %eax
movl %eax, %cr3
并设置启动使用分页处理(CR0的PG标志,为31)
movl %CR0, %eax
orl $0x80000000, %eax
movl %eax, %cr0

5. 跳转到/init/main.c
至此,调用返回指令,将堆栈中的main程序的地址弹出,并开始运行/init/main.c程序。
与压栈相关的指令如下:
push1 $0
push1 $0
push1 $0
push1 $L6
push1 $_main
调用返回指令代码如下:
ret

在head.s程序执行结束后,已经正式完成了内存页目录和页表的设置,并重新设置了内核实际使用的中断描述符表和全局描述符表。此时system模块在内存中的详细映像如下:
0x0000--0x0FFF:内存页目录表(4KB)
0x1000--0x1FFF:内存页表PG0(4KB)
0x2000--0x2FFF:内存页表PG1(4KB)
0x3000--0x3FFF:内存页表PG2(4KB)
0x4000--0x4FFF:内存页表PG3(4KB)
0x5000--0x53FF:软盘缓冲区(1KB)
head.s部分代码
中断描述符表IDT(2KB)
全局描述符表GDT(2KB)
main.c程序代码
kernel模块代码
mm模块代码
fs模块代码
lib模块代码


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android中ImageButton的运用详解 下一篇Linux 1.1的出错编号个人注释

评论

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

·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)