首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux0.01 boot.s

2012-04-11 
求助 linux0.01 boot.sgdt:.word0,0,0,0 dummy.word0x07FF 8Mb - limit2047 (2048*40968Mb).word0x000

求助 linux0.01 boot.s
gdt:
.word0,0,0,0; dummy

.word0x07FF; 8Mb - limit=2047 (2048*4096=8Mb)
.word0x0000; base address=0
.word0x9A00; code read/exec
.word0x00C0; granularity=4096, 386

.word0x07FF; 8Mb - limit=2047 (2048*4096=8Mb)
.word0x0000; base address=0
.word0x9200; data read/write
.word0x00C0; granularity=4096, 386



上面的ox07ff ox0000 ox9a00 ox00c0代表什么意思 这个是描述符的格式么 他指向内存的那个地址?谢谢了

[解决办法]
linux0.11完全注释 书上不说了么,全局描述符,第一个是word 0,0,0,0不用,后两个分别是代码段,数据段描述符

描述符共64位:

代码段:0x00c0 9a00 0000 07ff
 段限长:0x7ff
 基地址:0x0000
 ....其他还有很多,好像是intel当年修修补补,把格式搞的有点乱 

数据段也类似
0x00c0 9200 0000 07ff

具体格式参考那书 4.3.4 段描述符


这些是386的保护模式下,段/页式内存管理的内容,看看这个
http://lwglucky.blog.51cto.com/1228348/338923

GDT可以被放在内存的任何位置,那么当程序员通过段寄存器来引用一个段描述符时,CPU必须知道GDT的入口,也就是基地址放在哪里,所以 Intel的设计者门提供了一个寄存器GDTR用来存放GDT的入口地址,程序员将GDT设定在内存中某个位置之后,可以通过LGDT指令将GDT的入口地址装入此积存器,从此以后,CPU就根据此积存器中的内容作为GDT的入口来访问GDT了。 

热点排行