|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
哎,才来这个论坛几天,需要鱼币,买小甲鱼视频,在此发一些技术文章,如果觉得好,请回复。这里说一下intel系列汇编的寻址方式,8086和80286大家叫做16位汇编,采用的基址*16+偏移地址,这个不用说了,很简单,自从80386之后,采用32位地址和32位数据线,为了实现兼容,此时的寻址方式也支持以前的,这种叫做实模式,。现在有保护模式了,现在我就来说一下保护模式的寻址方式,纵观,很多书籍,无论神马罗云彬,还是于渊都没有说清楚我再次说一次,哎,语文不好,希望你可以看懂,现在开始!!!!!!!
1.明白一些东西,GDT,LDT,GDTR,LDTR,TSS,IDT,TR:
首先,看指令 mov eax,ds:[bx] ;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也就是任务表,
汗啊,蛋疼,发现说不下去了,好多好多内容,要太监了,难怪那么多书籍没有写完整的了,我这样说你们懂吗,蛋疼!,发现教东西不是件简单的事情,!!!!!!
|
评分
-
查看全部评分
|