关于arm的位操作问题

[复制链接]
2840|4
 楼主| shanyongde 发表于 2007-8-14 19:44 | 显示全部楼层 |阅读模式
因为arm没有位操作指令,它所有的位操作都是通过对与或操作来实现的,那么会不会发现以下这个问题,比如x1,x2是两个位变量,都定义在一个位段xtype内。在主程序中希望对位变量进行x1付值操作,那么这个一个付值过程是不是应该这样的:“1.将xtype付值给一个寄存器R1。2.对R1进行相应的与或操作。3.将R1再付值给xtype。”那么问题就是,如果在步骤2,3中间如果发生了中断,而且在此中断内也对xtype的其他位如x2进行了位操作,这个时候中断返回时候正好应该执行“3”步骤了(因为在中断之前应该对R1进行了压栈处理了),那么在主程序中执行完“3”步骤后,实际在中断内对xtype变量中的位变量X2进行的操作实际上应该是没起作用啊,虽然这样的事情发生的概率很小,但是为了预防万一,我现在的程序内,都没敢使用位变量,还好ram够(还有一个方法就是把中断和主程序用的位变量进行人为的区分,可是这样改起就太麻烦了)。不知道各位是否遇到过这样的问题,大家对这个问题是怎么看的,有没有什么更好的解决办法,望赐教。不胜赶紧,有什么问题也可以电子邮件联系,shanyongde@163.com
computer00 发表于 2007-8-14 19:53 | 显示全部楼层

操作时关中断。以前有一个帖讨论的,你可以搜索一下,

那个是操作IO的。
 楼主| shanyongde 发表于 2007-8-14 20:18 | 显示全部楼层

帖子叫啥名字啊?

经常关中断,不太好吧。不过谢谢楼上的兄弟回帖!
阿南 发表于 2007-8-14 20:28 | 显示全部楼层

付值过程,楼主可以查看反汇编代码;中断可以做实验多次

  
computer00 发表于 2007-8-14 20:58 | 显示全部楼层

re

  <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2524192&tp=arm%u6307%u4EE4%u96C6%u4F4D%u64CD%u4F5C%u6709%u95EE%u9898%uFF01%uFF01%uFF01'>https://bbs.21ic.com/club/bbs/list.asp?boardid=35&t=2524192&tp=arm%u6307%u4EE4%u96C6%u4F4D%u64CD%u4F5C%u6709%u95EE%u9898%uFF01%uFF01%uFF01</a>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

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