jmp 0x20:0x0123
分析步骤:
1.段选择子拆分
0X20 = B100000 ===>TI = 0;RPL=0;INDEX = 4
2.查DGT表得到段描述符
TI = 0 ,所以查找GDT表
INDEX=4 ,可找到对应的段描述符
四种情况可以跳转:代码段、调用门、TSS任务段、任务门
3.权限检查
如果是非一致性代码段,要CPL==DPL并且RPL <= DPL
如果是一致性代码段(即代码共享,低级可访问高级的代码,但不改变CPL的值),要求CPL>=DPL
4.加载段描述符
通过上面的权限检查后,CPU会将段描述符加载到CS段寄存器中
5.代码执行
CPU将CS.base + offset(0x0123)的值写入EIP,然后执行CS:EIP处的代码,实现段间跳转