1、Orange‘S:一个操作系统的实现之选择子说明

本人在读这本书3.1.2时遇到如下内容:

书中说不难理解,当TI和RPL都为零时,选择子就变成了对应描述符相对于GDT基址的偏移。

这里有点绕需要额外补充说明下:

因为GDT中第一个描述符定义为空的描述符,如图,

假设你即将跳到第二个描述符的段,每个描述符8个字节,此时你的选择子为LABEL_DESC_CODE32-LABEL_GDT等于0b0000 0000 0000 1000(最后三位为TI和RPL),然后CPU将选择子装入寄存器,根据高13位0b0000 0000 0000 1的值(十进制就是1)乘以8得到描述符在GDT的偏移(1*8=8),刚好找到第二个段描述符,然后再根据段描述符中的段基址加上偏移地址得到线性地址。

感觉设计很巧妙。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值