鱼C论坛

 找回密码
 立即注册
查看: 2562|回复: 5

对C语言与汇编中内存地址的疑惑

[复制链接]
发表于 2012-1-9 14:30:03 | 显示全部楼层 |阅读模式

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

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

x
    本人刚开始学习C语言,入门就遇到了一个问题,没想明白,希望大家赐教.
    本人一直以为C语言是可以直接对内存物理地址进行控制的,类似JAVA等一些运行在虚拟机上的高级语言,由虚拟机为程序员虚拟出了一个硬件环境,使得我们无法直接对内存物理地址进行控制.
    本人使了下,首先查看了1000:0000物理地址的值如下图,均为0

                               
登录/注册后可看大图

    然后使用C语言的DEBUG工具查看发现不太一样,如下图所示:


                               
登录/注册后可看大图






                               
登录/注册后可看大图

    不知道是不是我理解错了,希望大家能给指点一些,谢谢各位.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-9 15:11:21 | 显示全部楼层
C语言是32位地址,你上面那个是16位汇编,当你学WIN32汇编时候,地址就和C语言那一样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-1-9 16:00:23 | 显示全部楼层
redhat0921 发表于 2012-1-9 15:11
C语言是32位地址,你上面那个是16位汇编,当你学WIN32汇编时候,地址就和C语言那一样了

感谢你的回答,可以发 个试验截图之类的,我的猜想是,无论系统是16位,还是32位的,内存始终对CPU是线性的,不同的是寻址能力数据总线宽度等,但是对应的物理地址应该是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-10 10:33:36 | 显示全部楼层
kk3173603 发表于 2012-1-9 16:00
感谢你的回答,可以发 个试验截图之类的,我的猜想是,无论系统是16位,还是32位的,内存始终对CPU是线性的,不 ...

硬件上确实是这样,但和系统的关系也是分不开的,例如32位XP只能寻址到4G内存(理论上),但你的32位XP又是使用的64位CPU,那为什么只能支持4G的内存呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-10 10:35:21 | 显示全部楼层
kk3173603 发表于 2012-1-9 16:00
感谢你的回答,可以发 个试验截图之类的,我的猜想是,无论系统是16位,还是32位的,内存始终对CPU是线性的,不 ...

还有,既然是16位的系统,那么就肯定是16位的内存地址咯,后面多的内存就空着了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-11 03:54:43 | 显示全部楼层
楼主可以共享下 你32位的经验哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 16:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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