因为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 |