鱼C论坛

 找回密码
 立即注册
查看: 3902|回复: 2

求教小甲鱼

[复制链接]
发表于 2011-4-20 13:56:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-4-25 04:04 编辑

段地址和偏移地址是由2个16位构成,方式为段地址*16+偏移地址,那么偏移地址最大只能是FFFF,但是,如果段地址是FFFF,那么偏移地址超过F之后,地址就会变21位的,这就不对了,这是咋回事?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-20 17:12:19 | 显示全部楼层
补充,我在debug下用-d命令查看,也有类似与这样的地址FFFF:0010---FFFF:FFF0,这些不都超过了20位了么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-21 11:21:21 | 显示全部楼层
这个问题有点意思哈,我可以这么解释给你听,在现在CPU模式中我们不是说CPU对每个程序看以看到的地址空间都是4G,那事实上呢?内存真的需要4G这么大吗?答案是否定的。这只是由于现在的CPU的EIP是32位,32可以寻址这么大的空间,所以微软在这么给个定义。

回到这道题,也是一样的道理,两个十六位可以合成一个二十位的数,但也可能合成一个二十一位的数值,但是当时的物理内存最大确只有1MB,所以超出的部分是访问不到的,在当时超出部分的实际寻址是00000h的内容。而现在我们都知道内存很大,你懂得,越界访问~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 18:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表