追能帮我解释这段程序,要详细点

[复制链接]
2913|3
 楼主| suoluoji 发表于 2010-9-14 17:12 | 显示全部楼层 |阅读模式
本帖最后由 suoluoji 于 2010-9-14 17:23 编辑

for(i=dstAddr;i<dstAddr+length;i+=4)
    {
     memSum1+=*((U32 *)i)=i^0x55aa5aa5;
    }

这是DMA中的一段程序,memSum1初值为0,类型为volatile U32
xinzha 发表于 2010-9-14 21:54 | 显示全部楼层
x = i^0x55aa5aa5   ;这个不用解释了吧
*((U32 *)i) = x; 将整数i强转为指向U32的指针,并将 i 这个指针所指向的地址的内容置为x,举个例子,当i =0时,这个表达式是将地址0的内容改为x,而i本身的地址可能是在0x10000000,i本身并没有发生任何改变
 楼主| suoluoji 发表于 2010-9-16 16:23 | 显示全部楼层
谢啦,当初看程序时有点不解,现在彻底的明白了

2# xinzha
lanmanck 发表于 2010-9-16 16:30 | 显示全部楼层
恩,看成2段就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

22

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部