寄存器不是可以直接赋值的吗?

[复制链接]
3605|33
 楼主| liliang9554 发表于 2018-4-12 10:36 | 显示全部楼层 |阅读模式
*W=*W&0x0404;
W代表某寄存器。
寄存器不是可以直接赋值的吗?
 楼主| liliang9554 发表于 2018-4-12 10:38 | 显示全部楼层
为什么我看到一些程序的初始化里面有类似这种语句?
zhanghqi 发表于 2018-4-12 10:42 | 显示全部楼层

我也不明白,猜想大概是想保留某些位吧
spark周 发表于 2018-4-12 10:46 | 显示全部楼层

按位与,按位或操作不是和寄存器原来的值有关吗?
吹哥 发表于 2018-4-12 10:46 | 显示全部楼层
直接赋值对位操作起来就比较麻烦,不如这样可以封装,更直观明了
heweibig 发表于 2018-4-12 10:50 | 显示全部楼层
运算之后寄存器的值不是不确定了吗,怎么能算初始化呢?
zhaoxqi 发表于 2018-4-12 10:53 | 显示全部楼层
有些寄存器,写0不影响,写1是清0
dengdc 发表于 2018-4-12 10:56 | 显示全部楼层

我觉得应该在初始化的时候不止做了这些,你看看他的头文件是不是对他赋了值
wuhany 发表于 2018-4-12 10:59 | 显示全部楼层

这是从程序兼容性考虑,若其他地方改了寄存器(典型是volatile)的值,此处又改会有冲突,所以清零用与,置位用或
 楼主| liliang9554 发表于 2018-4-12 11:04 | 显示全部楼层
原来如此啊,不过用了volatile寄存器会被修改?这个关键字不是很熟
spark周 发表于 2018-4-12 11:11 | 显示全部楼层
应该是位清零操作
不过楼主的例子不典型,常见的是这种
*W=*W&0xFFFD;#bit1位清零
建议楼主结合上下文看一下。
 楼主| liliang9554 发表于 2018-4-12 11:13 | 显示全部楼层
呵呵,了解啦
wzgreengrass 发表于 2018-4-12 11:17 | 显示全部楼层
可能吧
dspmana 发表于 2018-4-12 22:14 | 显示全部楼层
可以直接对寄存器赋值
eefas 发表于 2018-4-12 22:14 | 显示全部楼层
liliang9554 发表于 2018-4-12 10:38
为什么我看到一些程序的初始化里面有类似这种语句?

这个就是定义的地址。
pl202 发表于 2018-4-12 22:15 | 显示全部楼层
liliang9554 发表于 2018-4-12 10:38
为什么我看到一些程序的初始化里面有类似这种语句?

*W是寄存器的地址。
aspoke 发表于 2018-4-12 22:15 | 显示全部楼层
liliang9554 发表于 2018-4-12 10:38
为什么我看到一些程序的初始化里面有类似这种语句?

楼主查看一下W的宏定义
232321122 发表于 2018-4-12 22:15 | 显示全部楼层
liliang9554 发表于 2018-4-12 10:38
为什么我看到一些程序的初始化里面有类似这种语句?

很多都是定义的寄存器
ghuca 发表于 2018-4-12 22:16 | 显示全部楼层
楼主不是直接赋值的吗
ghuca 发表于 2018-4-12 22:16 | 显示全部楼层
赋值干什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

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