逻辑地址和线性地址的问题

WJN92 2011-01-03 10:54:51
用softice看了一下GDT
select type base limit
0008 code32 00000000 FFFFFFFF
0028 TSS32 80042000 000020AB

base就是线性地址,0008:00000000 - 0008:FFFFFFFF
如果 0008:80042000 那么它的线性地址不就是 80042000 了吗?
那么线性地址也应该是唯一的,这样的话不就会重复了吗?
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rlwhappy 2012-06-13
  • 打赏
  • 举报
回复
好像是地址是重复了
WJN92 2011-01-04
  • 打赏
  • 举报
回复
1L:
那么从上面那个表看
0008的基址是0,偏移80042000;0028的基址是80042000偏移0
0028:00000000 跟 0008:80042000 一样吗?

2L:
这个0008的基址是在softice里面看得,0008的二进制就是1000,那么就是查GDT,而选择子就是1嘛
我在softice 里面输入 “GDT 1”它就显示
select type base limit
0008 code32 00000000 FFFFFFFF
这个看来它的基址就是 0 啊
leetow2003 2011-01-04
  • 打赏
  • 举报
回复
select是选择子,base是基地址,limit是段界限,
在32位下逻辑地址是段选择子:偏移地址,线性地址是基地址+偏移地址(主要此时基地址不要乘以16),
所以你说:如果 0008:80042000 那么它的线性地址不就是 80042000是不对的,因为0008是段选择子,
基地址要通过段选择子在GDT表中去查找、获得

masmaster 2011-01-03
  • 打赏
  • 举报
回复
80042000 ;是基地址
000020AB ;是段界限
线性地址范围80042000H~800440ABH

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧