Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: 阿龙   发起时间: 2010-10-27 13:39 下午   回复: 0

Print Search
帖子排序:    
   2010-10-27, 13:39 下午
jinyuelong 离线,最后访问时间: 2010/8/16 5:44:36 阿龙

发帖数前75位
注册: 2010-08-16
发 贴: 15
对于CPL,DPL,RPL的新疑惑
Reply Quote
只谈代码段:
网上有关于CPL, DPL, RPL的很多解释,但我还是有一些疑惑:
1. RPL的调整是CPU进行的?还是操作系统?还是程序员?
2. CPL到底保存在哪里?CS寄存器(物理角度)的[1:0]位?
3. 和2相关的问题就是,RPL到底保存在哪里?在代码中,选择子一般是个常量,包含了索引值及TI位,但并没有指定RPL,在转移的时候,类似于这样的指令,jmp selector:offset,那么RPL在哪里呢?是不是有一块大小和选择子一样的内存被分配,然后填入索引,TI位,并且写入RPL,然后才执行验证?
4. 我在看杨继文的书时,里面对于向目标代码段转移的步骤有如下的描述:
 a. 判断是否为空描述符
 b. 从全局/局部描述符表内读出描述符(已经读出了描述符!!!)
 c. 根据情况,检测描述符类型是否正确;调整RPL
 d. 装载至CS告诉缓冲寄存器
 e. ......
 f. ......
我的疑问是第C步骤,根据什么情况?检测什么类型?如何调整RPL?
5. 在程序运行的任何时刻,各个段寄存器里的低2位是不是没有什么用途(除了CS[1:0],如果CPL是保存在那里的话),因为在转移的时候,需要的是CPL,在某个位置存在的RPL和目标段的DPL?
很多问题,期待前辈能予以解答,严重迷惑中...
谢谢!!
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 对于CPL,DPL,RPL的新疑惑

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.