xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1374回复:9

中断时,保存的EIP是线形地址还是物理地址?

楼主#
更多 发布于:2004-08-22 08:36
rt
redhand
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2007-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-22 09:26
应该是线性地址
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-22 12:56
WIN9X下的中断时有时是V86的偏移指针,V86寻址=CS<<4+IP
NT下应该是线型地址,而且在所有进程地址空间
AthlonxpX86(桃源村)
xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-22 16:55
而且在所有进程地址空间

这个什么意思?

就我自己的理解,光有线形地址没有如何意义,同一个线形地址在不同的进程下表示的内容根本不一样.

因此,中断发生时,
如果eip是指线形地址,那应该同时也保存了进程/线程信息.

如果是物理地址,又不知道他如何恢复以前的线程信息.
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-22 19:31
中断服务历程在系统地址空间,而NT系统中系统地址空间被映射到所有进程地址空间(EIP在NT下肯定不可能是物理地址,),这也是为什么所有程序能共享DLL并且可通过DLL来进入并访问其他进程的原因
AthlonxpX86(桃源村)
xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-22 20:10
中断服务历程在系统地址空间
---------------------------------------
没错!但中断运行的环境和普通进程运行的环境是不同的两码事!

而NT系统中系统地址空间被映射到所有进程地址空间(EIP在NT下肯定不可能是物理地址,),
--------------------------------------------------
没错!NT系统映射到所有进程的高端地址.

有程序能共享DLL并且可通过DLL来进入并访问其他进程的原因
----------------------------------------------------
这个有问题,在nt系统下,有copy-on-write机制,除非采用特别的方法,否则,不能实现通过DLL来进入并访问其他进程.比较普通的是采用远程注入的方式完成.

其实,我也比较倾向是线形地址,但一直没有弄明白线程环境恢复机制
AthlonxpX86
驱动小牛
驱动小牛
  • 注册日期2002-11-10
  • 最后登录2013-07-17
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-22 22:23
中断服务历程在系统地址空间
---------------------------------------
没错!但中断运行的环境和普通进程运行的环境是不同的两码事!

而NT系统中系统地址空间被映射到所有进程地址空间(EIP在NT下肯定不可能是物理地址,),
--------------------------------------------------
没错!NT系统映射到所有进程的高端地址.

有程序能共享DLL并且可通过DLL来进入并访问其他进程的原因
----------------------------------------------------
这个有问题,在nt系统下,有copy-on-write机制,除非采用特别的方法,否则,不能实现通过DLL来进入并访问其他进程.比较普通的是采用远程注入的方式完成.

其实,我也比较倾向是线形地址,但一直没有弄明白线程环境恢复机制
 

哈哈,我晕啊,你懂还要问,我懂但我回答的不够准确,简直是故意在鸡蛋里面调骨头,算我的鸡蛋没做好
WIN32线程属于轻量级任务,一个进程中的所有线程共享一个地址空间。因此线程和进程的主要区别就是在调度过程中是否更换内存表述附表,包括IDT GDT LDT等,其他通用寄存器调度时都要切换,我说的肯定不够准决,所以请您不要挑骨头了,肯定有
AthlonxpX86(桃源村)
xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-23 09:14
呵呵,惭愧,一直对切换过程不是太懂!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2004-08-23 09:21
reference in intel ia32 software developer manual vol 3
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-23 10:07
看过,但不是太明白,所以拿来问!呵呵
游客

返回顶部