处理器中存在奇数的物理地址吗?

爱问问题的猪 2013-05-23 09:01:59
处理器中存在奇数的物理地址吗?
...全文
300 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱问问题的猪 2013-05-29
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
帖主 搜“地址总线 RAM读写电路” 了吗?
搜了,谢谢大师提醒,感谢!
赵4老师 2013-05-28
  • 打赏
  • 举报
回复
帖主 搜“地址总线 RAM读写电路” 了吗?
爱问问题的猪 2013-05-27
  • 打赏
  • 举报
回复
如果有奇地址,CPU不就可以通过任何地址访问内存了吗?为何又需要字节对齐,结构体对齐之类的东西呢? 经过千辛万苦的探索,翻遍计算机组成原理、汇编语言、计算机操作系统、查遍网络,学习了存储单元、按字节编址、按字编址、按字节寻址、按字寻址、cache的工作原理、CPU页式内存管理,仍然无果!!!! 最后还是找到了答案:酷睿CPU或奔腾CPU有64条数据总线,一次可传输8字节,32位操作系统,32条地址线可用,可寻址4GB的内存空间(4GB的存储单元),但是64条数据线的CPU的访存单元是8字节,访存范围是0.5G(0.5G的8字节),也即,32条地址线中的最低3位的地址线不用(2^3),这样就解释了为什么VC默认的是8字节对齐,结构体需要字节对齐。 所以本题答案是:存在奇数的物理地址,但是在地址总线上传输物理地址时却不存在奇数物理地址,只存在被8整除的物理地址。
derekrose 2013-05-27
  • 打赏
  • 举报
回复
有吧
爱问问题的猪 2013-05-27
  • 打赏
  • 举报
回复
引用 2 楼 youyou1912 的回复:
当然有啦.
char buf[32];   //32个字节的地址
for (int i =0; i<32; ++i)
  cout << hex << (int)buf++ << endl; // 各种地址都有
这段源码没有问题么?hex是什么,没声明变量?buf++可以么?(int)buf,数组首地址转换成int?
赵4老师 2013-05-24
  • 打赏
  • 举报
回复
搜“地址总线 RAM读写电路”
super_admi 2013-05-24
  • 打赏
  • 举报
回复
你应该问“首地址”。
hugett 2013-05-23
  • 打赏
  • 举报
回复
为什么没有。。肯定有啊。。
youyou1912 2013-05-23
  • 打赏
  • 举报
回复
当然有啦.
char buf[32];   //32个字节的地址
for (int i =0; i<32; ++i)
  cout << hex << (int)buf++ << endl; // 各种地址都有
lsjfdjoijvtghu 2013-05-23
  • 打赏
  • 举报
回复
猜,有。内存有,处理器类比

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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