有史以来最详细完整的给你讲解保护模式寻址全过程,比小甲鱼还详细清晰!!!!!!
哎,才来这个论坛几天,需要鱼币,买小甲鱼视频,在此发一些技术文章,如果觉得好,请回复。这里说一下intel系列汇编的寻址方式,8086和80286大家叫做16位汇编,采用的基址*16+偏移地址,这个不用说了,很简单,自从80386之后,采用32位地址和32位数据线,为了实现兼容,此时的寻址方式也支持以前的,这种叫做实模式,。现在有保护模式了,现在我就来说一下保护模式的寻址方式,纵观,很多书籍,无论神马罗云彬,还是于渊都没有说清楚我再次说一次,哎,语文不好,希望你可以看懂,现在开始!!!!!!!1.明白一些东西,GDT,LDT,GDTR,LDTR,TSS,IDT,TR:
首先,看指令 mov eax,ds: ;ds=0x10,bx=0x0
你肯定会说是吧ds*16+bx=0x100地址的内容放到eax寄存器,不过不全对,在实模式下面是这样,但是在保护模式就不同了,
ds=1 0000B,,请百度段选择子结构,得到索引时10B也就是2,,然后去GDT全局描述表里面找第二个描述符(从0开始计算),描述符是一个8位的结构,里面包含了段基址,我们拿这个段基址*16+bx来找内存内容给eax,描述符呢,是8位的,包含段基址,段界限,颗粒度,段的权限DPL,和类型TYPE看是代码段还是数据段,还有s属性,汗蛋疼,,记得GDT里面可以有描述LDT和内核代码和数据段的描述符,IDT是不在GDT里面的,中断描述符,TSS是104位的,其最后8位开始时描述LDT的,蛋碎,LGDT是用来加载GDT的,LLDT用来加载LDT,SGDT是保存GDT的,SLDT用来保存LDT到内存,TR指向TSS的基地址,GDTR指向GDT基地址,。LDTR用来索引在GDT中的LDT描述符,然后找到LDT基地址,然后根据段选择子来查找,TSS也就是任务表,
汗啊,蛋疼,发现说不下去了,好多好多内容,要太监了,难怪那么多书籍没有写完整的了,我这样说你们懂吗,蛋疼!,发现教东西不是件简单的事情,!!!!!!
**** Hidden Message *****
你们还是自己百度GDT,LDT,TSS,IDT,LGDT,SGDT,LLDT,LIDT,SIDT,TSS,TR,段选择子,段描述符,中断描述符,陷阱描述符,任务描述符,调用门描述符,分页机制,百度明白之后不懂得在下面提问吧,我来一个个回答你们,蛋碎,教人如此困难!!!不知道从哪里说起 来看看~ 哇塞碰到我的偶像甲鱼啊!!!甲鱼哥我也好喜欢海贼王啊,!!,好吧那我就耐心讲一下,是这样的一般情况下,只有一个GDT全局描述符表,里面存储着一堆的描述符,这些描述符用来描述内核的代码段,数据段,或者LDT表(在GDT里面有一种描述符专门用来描述LDT表的段基址),的内容,他们的结构图如下,下面是两个任务的切换的时候GDT还有LDT,IDT的内容图,
图片太大了,不能上传,我共享到云盘吧,大家来看看!!!!!
http://pan.baidu.com/s/1hqn4XUk 来看看,学习下 支持下吧。打字这么辛苦 学习了!!!
学习了!!! 你们还是自己百度GDT,LDT,TSS,IDT,LGDT,SGDT,LLDT,LIDT,SIDT,TSS,TR,段选择子,段描述符,中断描述符,陷阱描述符,任务描述符,调用门描述符,分页机制,百度明白之后不懂得在下面提问吧,我来一个个回答你们,蛋碎,教人如此困难!!!不知道从哪里说起 看看先。。谢谢 本帖最后由 oggplay 于 2014-2-14 22:12 编辑
先把基本汇编指令搞清楚了,再研究操作系统。 史以来最详细完整的给你讲解保护模式寻址全过程 学习学习中~~~ 来看看,,,看看是不是真货
好东西必须收藏 顶楼主啦..希望楼主多发精品好帖啦..... 看来 还是有 很多入门级问题 要深入啊。 看来 还是有 很多入门级问题 要深入啊。 {:5_109:}努力学习!!! {:5_105:}看一下!