linux的x86架构初始化

上传人:豆浆 文档编号:48537777 上传时间:2018-07-17 格式:PPTX 页数:9 大小:796.07KB
返回 下载 相关 举报
linux的x86架构初始化_第1页
第1页 / 共9页
linux的x86架构初始化_第2页
第2页 / 共9页
linux的x86架构初始化_第3页
第3页 / 共9页
linux的x86架构初始化_第4页
第4页 / 共9页
linux的x86架构初始化_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《linux的x86架构初始化》由会员分享,可在线阅读,更多相关《linux的x86架构初始化(9页珍藏版)》请在金锄头文库上搜索。

1、linux的x86架构初始化分页机制的初始化问题1:标志寄存器有哪些常用的标志位?CF、PF、ZF、SF、OF、DF进位、奇偶、零、符号、溢出、方向DF(方向标志位)控制每次操作后si、di的增减1、X86架构下的从开机到Start_kernel启动 的总体过程这个过程简要概述为:开机BIOSGRUB/LILOLinux Kernel其运行的流程图和重要函数如下图所示:GRUB( GRand Unified B ootloader)是当 前linux诸多发行版 本默认的引导程 序。1. .boot/header.S: start_of_setup 2. .boot/main.c: main()

2、 - pm.c: go_to_protected_mode() 3. .boot/pmjump.S: protected_mode_jump 4. .boot/compressed/head_32.S: startup_32() - decompress_kernel() 5. .kernel/head_32.S: startup_32() - head32.c: i386_start_kernel()boot/compressed/head_32.S: startup_32()内核被解压至RAM后再调用/arch/i386/kernel/head.S文件中的startup_32例程,这个新的

3、 startup_32例程会初始化页表,启用内存分页机制。(4)设置管理内存的分页处理机制 setup_paging:movl $1024*5,%ecx /对5页内存(1页目录,4页页表)清零xorl %eax,%eax /eax内容清空xorl %edi,%edi /页目录从0x0000开始cld;rep;stosl /eax内容存到es:edi所指的内存处,且edi增4/以下四项为设置页目录表中的项,_pg_dir地址为0x0000,即页目录地址 movl $pg0+7,_pg_dir /pg0在前边被指定为0x1000,所以第一个页表项设定为0x00001007movl $pg1+7,_

4、pg_dir+4 /设置页目录中的第二个页表项movl $pg2+7,_pg_dir+8 /设置页目录中的第三个页表项movl $pg3+7,_pg_dir+12 /设置页目录中的第四个页表项 /填写4个页表中的页内容movl $pg3+4092,%edi /edi设定为最后一页页表的最后一项movl $0xfff007,%eax /最后一项对应的物理内存是0x0xfff000,属性标志为0x07,表示页存在、 用户可读写std /方向位置位 1:stosl /eax内容存到es:edi所指的内存处,且edi增4subl $0x1000,%eax /物理地址减4K,处理下一页。因为页表中的每一

5、项都是代表一页的。jge 1b /若小于0表示都已填写页表okxorl %eax,%eax /页目录地址在0x0000,所以这里对eax寄存器清空movl %eax,%cr3 /将页目录表地址存入CR3中movl %cr0,%eax /orl $ox80000000,%eax /开启PG标志movl %eax,%cr0 /表示启动使用分页处理ret /谢谢!问题2:Jge 指令是什么?怎么实现的?Jge是大于等于则跳转(jump if greater than or equal to)指令该指令通过判断SF异或OF是否=0来判断是否大于等于.SF=0时:大于等于。SF=1时:小于。OF=0时:

6、未溢出。 OF=1时:溢出。其中在Intel官方文档Volume 2A Instruction Set Reference (A-M)中提到cld指令 CLD:CLD: Description Clears the DF flag in the EFLAGS register. When the DF flag is set to 0, string operations increment the index registers (ESI and/or EDI). Operation is the same in all non-64-bit modes and 64-bit mode.cld;rep;stosl cld设置edi或esi为递增方向,rep做(%ecx)次重复操作,stosl表示edi每次增加4,这条语 句达到按4字节清空前5*1024*4字节地址空间的目的。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号