| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1235 人关注过本帖
标题:大家帮忙看看内存对齐问题!
取消只看楼主 加入收藏
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
大家帮忙看看内存对齐问题!
“一个字或双字操作数跨越了4 字节边界,或者一个四字操作数跨越了8 字节边界,被
认为是未对齐的,从而需要两次总线周期来访问内存”。


不太理解“双字操作数跨越了4 字节边界” 和 “四字操作数跨越了8 字节边界”,大家帮忙解释解释.

谢谢!

[ 本帖最后由 divingmaomao 于 2010-8-10 09:24 编辑 ]
搜索更多相关主题的帖子: 内存 
2010-08-09 17:03
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
收藏
得分:0 
谢谢!

一直以32位理解,现在整个串起来还是有些地方不能想通,能串起来讲解下吗?

一次总线周期访问(32位下  char、int、long、longlong)如何寻址?————>内存对齐后如何寻址?————>为什么说(32位下  char、int、long、longlong)内存对齐后一次总线周期就能访问?

麻烦高手们解惑?

谢谢!
2010-08-10 09:22
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
收藏
得分:0 
都约定好的吗?

如果是读取char类型: 无论在什么位置(不管是否对齐)一次总线周期访问都能读取到(丢弃无效位吗?);

如果是读取short类型:就约定从2个字节对齐的地址开始访问,一次总线周期(32位)读取2个字节;

如果是读取int类型:就约定从4个字节对齐的地址开始访问,一次总线周期(32位)读取4个字节;

那如果是读取64位数据怎么办?

这样理解对吗?
2010-08-10 10:47
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
收藏
得分:0 
对于char类型:无论在奇数边界还是在偶数边界,32位寻址从偶地址开始,是因为每次读取32位都能读取到吗?

还请高手们指出不对的地方,详细解释下内存对齐的缘由!!!

不胜感激!
2010-08-10 11:13
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
收藏
得分:0 
查了计算机系统结构,找到相关解释:存储器宽度32位,一个存储周期可以访问4个字节,按照这个思想去理解,跨越边界的问题也能想通的了,这边可以贴图就好了!


图片附件: 游客没有浏览图片的权限,请 登录注册
2010-08-10 15:19
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
收藏
得分:0 
还有高手指正的了,再期待一下!

谢谢!
2010-08-11 13:59
divingmaomao
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-9
收藏
得分:0 
谢谢大家的解答,帮助我又学习了一些新的知识,有时间我再去找些系统方面的资料学习学习,理论基础太薄弱了,就是不想停在 “知道怎么做” 的阶段!

分也不多,还望大家见谅!

再次感谢!
2010-08-13 12:48
快速回复:大家帮忙看看内存对齐问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020594 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved