Linux.ChinaUnix.net
ChinaUnix | Linux首页 | 新闻 | 博客 | 文章 | 专栏 | 新手 | 方案 | 图书 | 下载 | 人才 | 手册 | wiki | 搜索     
Linux论坛
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

修改指针值的操作是一个原子操作?
首页 » CU论坛 » Linux » 汇总贴列表 » 内核源码 »  
[打印] [订阅] [收藏] [推荐给朋友] [本帖文本页]
zx_wing   帅哥 (骑着猪的青蛙)
大天使
学徒



UID:499746
注册:2006-12-4
最后登录: 2008-09-06
帖子:1940
精华:3

可用积分:1624 (家境小康)
信誉积分:100
专家积分:11 (本版:1)
空间积分:0
推广积分:0

来自:成都
状态:...保密...

[资料] [站内短信] [Blog]


顶部
21楼 发表于 2008-5-19 17:10 


QUOTE:
原帖由 gvim 于 2008-5-19 17:03 发表
>>>*str指向的是buf[1]开始的8个字节内存区域。
呵呵,不好意思,是我自己没有初始化-_-;

>>>arm926ej-s平台如何解决未对齐?
也是靠编译器。

我搜到一篇帖子,恩,是说靠编译器。
http://blog.csdn.net/alenwelkin/archive/2006/12/19/1448324.aspx



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


C调 ---- C语言
都是最喜欢的
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
版主 gvim   帅哥 (日尼 禾尔)
版主-精灵使
我在白宫开房,接见布什到访



UID:192271
注册:2004-10-22
最后登录: 2008-09-05
帖子:3126
精华:5

可用积分:3832 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:成都
状态:...离线...

[资料] [站内短信] [Blog]


顶部
22楼 发表于 2008-5-19 17:13 
有些arm有byte, half word, word传输指令。
如果遇到不对齐的编译情况,编译器可以用byte, half word构造一个unaligned word

对齐不是单纯由计算机硬件决定的,而是CPU和编译器共同处理的结果。编译器可以把较长数据的访问拆分成多个byte来构造。
在计算机设计里面,这只不过是一种接口的设计抉择: 对齐既可以如X86那样处于接口之下,也可以暴露在接口之上由编译器完成。如同float point一样。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

灵魂说是对的,懵懂间认为我们每个人到这世界上一走,都是上帝安排的锻炼。在尘世间历练一回,经历许多的磨难 快乐 哀伤,是为了领会灵魂的升华。一但是时候了上帝再把我们招回,所以还是安心经历这人世的一招吧。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zx_wing   帅哥 (骑着猪的青蛙)
大天使
学徒



UID:499746
注册:2006-12-4
最后登录: 2008-09-06
帖子:1940
精华:3

可用积分:1624 (家境小康)
信誉积分:100
专家积分:11 (本版:1)
空间积分:0
推广积分:0

来自:成都
状态:...保密...

[资料] [站内短信] [Blog]


顶部
23楼 发表于 2008-5-19 17:22 


QUOTE:
原帖由 gvim 于 2008-5-19 17:13 发表
有些arm有byte, half word, word传输指令。
如果遇到不对齐的编译情况,编译器可以用byte, half word构造一个unaligned word

对齐不是单纯由计算机硬件决定的,而是CPU和编译器共同处理的结果。编译器可以 ...

arm的编译器可以检查到所有未对齐情况?
比如:

char buf[10];
int *p = (int *)&buf[1];
*p = 10;

运行没有问题?编译器把这种情况处理了?
如果是的话,arm没有未对齐异常哦?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


C调 ---- C语言
都是最喜欢的
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
xdsupermanli   帅哥
骑士




UID:539592
注册:2007-3-20
最后登录: 2008-09-03
帖子:57
精华:0

可用积分:47 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


顶部
24楼 发表于 2008-5-19 17:29 
回复 #23 zx_wing 的帖子

char buf[10];
int *p = (int *)&buf[1];
*p = 10;
这段程序在ARM cpu平台上运行一般是有问题的。



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zx_wing   帅哥 (骑着猪的青蛙)
大天使
学徒



UID:499746
注册:2006-12-4
最后登录: 2008-09-06
帖子:1940
精华:3

可用积分:1624 (家境小康)
信誉积分:100
专家积分:11 (本版:1)
空间积分:0
推广积分:0

来自:成都
状态:...保密...

[资料] [站内短信] [Blog]


顶部
25楼 发表于 2008-5-19 17:45 


QUOTE:
原帖由 xdsupermanli 于 2008-5-19 17:29 发表
char buf[10];
int *p = (int *)&buf[1];
*p = 10;
这段程序在ARM cpu平台上运行一般是有问题的。

恩,我刚才搜到一篇文章,unaligned access在ARM上引发的是一个data-abort exception
http://www.embedded.com/192202641?_requestid=462050



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


C调 ---- C语言
都是最喜欢的
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
版主 gvim   帅哥 (日尼 禾尔)
版主-精灵使
我在白宫开房,接见布什到访



UID:192271
注册:2004-10-22
最后登录: 2008-09-05
帖子:3126
精华:5

可用积分:3832 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:成都
状态:...离线...

[资料] [站内短信] [Blog]


顶部
26楼 发表于 2008-5-19 17:47 


QUOTE:
原帖由 zx_wing 于 2008-5-19 17:22 发表

arm的编译器可以检查到所有未对齐情况?
比如:

char buf[10];
int *p = (int *)&buf[1];
*p = 10;

运行没有问题?编译器把这种情况处理了?
如果是的话,arm没有未对齐异常哦?

会,比如参数需要一个word pointer,而传入一个unaligned word pointer,这个时候就没办法构造了。比如上面传*str给printf



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

灵魂说是对的,懵懂间认为我们每个人到这世界上一走,都是上帝安排的锻炼。在尘世间历练一回,经历许多的磨难 快乐 哀伤,是为了领会灵魂的升华。一但是时候了上帝再把我们招回,所以还是安心经历这人世的一招吧。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zx_wing   帅哥 (骑着猪的青蛙)
大天使
学徒



UID:499746
注册:2006-12-4
最后登录: 2008-09-06
帖子:1940
精华:3

可用积分:1624 (家境小康)
信誉积分:100
专家积分:11 (本版:1)
空间积分:0
推广积分:0

来自:成都
状态:...保密...

[资料] [站内短信] [Blog]


顶部
27楼 发表于 2008-5-19 17:48 


QUOTE:
原帖由 gvim 于 2008-5-19 17:47 发表


会,比如参数需要一个word pointer,而传入一个unaligned word pointer,这个时候就没办法构造了。比如上面传*str给printf

看来ARM平台处理器繁多,各自还不一样。
我搜到的是会触发异常的。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


C调 ---- C语言
都是最喜欢的
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
版主 gvim   帅哥 (日尼 禾尔)
版主-精灵使
我在白宫开房,接见布什到访



UID:192271
注册:2004-10-22
最后登录: 2008-09-05
帖子:3126
精华:5

可用积分:3832 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:成都
状态:...离线...

[资料] [站内短信] [Blog]


顶部
28楼 发表于 2008-5-19 17:50 


QUOTE:
原帖由 xdsupermanli 于 2008-5-19 17:29 发表
char buf[10];
int *p = (int *)&buf[1];
*p = 10;
这段程序在ARM cpu平台上运行一般是有问题的。

arm4以后的,配合gcc3.x以上一般来说没有问题,之前的我没有平台和编译器,无法尝试。
以前我专门处理过arm的对齐问题,所以记得很清楚。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

灵魂说是对的,懵懂间认为我们每个人到这世界上一走,都是上帝安排的锻炼。在尘世间历练一回,经历许多的磨难 快乐 哀伤,是为了领会灵魂的升华。一但是时候了上帝再把我们招回,所以还是安心经历这人世的一招吧。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
版主 gvim   帅哥 (日尼 禾尔)
版主-精灵使
我在白宫开房,接见布什到访



UID:192271
注册:2004-10-22
最后登录: 2008-09-05
帖子:3126
精华:5

可用积分:3832 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

来自:成都
状态:...离线...

[资料] [站内短信] [Blog]


顶部
29楼 发表于 2008-5-19 17:55 


QUOTE:
原帖由 zx_wing 于 2008-5-19 17:48 发表

看来ARM平台处理器繁多,各自还不一样。
我搜到的是会触发异常的。

risc和编译器的相关度比cisc大得多。为了保持设计的简洁,大量cisc由硬件搭建的硬电路功能,放到硬软接口之外,依赖软件配合实现(比如上边说的对齐之类的东西,这里就是指编译器,当然,软件不可能解决所有硬件问题,就像*str没办法拆出来一样,其中一个原因归咎于编译器系统的现有水平还不能达到我们预期的期望,未来的编译器怎样,就不好说了。)
所以一个高效的risc处理器,需要一个强大的编译器。两个比较显示的例子,一个是DSP,一个是VLIW。
VLIW是一个处理能力强大的东西,但是发展还不是很好,一个重要原因是它缺乏一个强大到可以支撑它的编译系统。

至于arm...估计都差不多吧,呵呵,我是没有条件用完所有的arm.

[ 本帖最后由 gvim 于 2008-5-19 17:58 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

灵魂说是对的,懵懂间认为我们每个人到这世界上一走,都是上帝安排的锻炼。在尘世间历练一回,经历许多的磨难 快乐 哀伤,是为了领会灵魂的升华。一但是时候了上帝再把我们招回,所以还是安心经历这人世的一招吧。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
xdsupermanli   帅哥
骑士




UID:539592
注册:2007-3-20
最后登录: 2008-09-03
帖子:57
精华:0

可用积分:47 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


顶部
30楼 发表于 2008-5-20 11:30 
回复 #28 gvim 的帖子

直至ARMV5TE,ARM体系结构都不支持边界不对齐的指针。



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » CU论坛 » Linux » 汇总贴列表 » 内核源码 »

 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - Linux时代 - Archiver - WAP - TOP

Processed in 0.046731 second(s), 5 queries , Gzip enabled