在中断程序内 变量的加加,这种情况是否会出现BUG

2019-10-16 05:33发布

先说明一下   a=a+1这条程序语句的执行步骤:
[url=]图片[/url]

我在想这种情况:
如果执行到第一步,将a的值读到寄存器R中

执行完这一条后,来了个中断就是 a=a-1 !
等执行完 a=a-1 ,这时候重点来了!

我的CPU会回到 a=a+1 的第二步!
R寄存器里面是不知道 a 已经被改变了,所以他还是按照原先的值 加1!
然后在写回到 a !
  
这时候就会出现bug了!
这种情况大伙们有考虑过吗?  要怎么避免?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
aozima
1楼-- · 2019-10-16 10:02
自加自减这类操作,关中断比较简单。
rmrmrm
2楼-- · 2019-10-16 11:28
我感觉如果是全局变量的话,你中断处理这个变量肯定是你设想的预期到了才会执行,这个是你想要的不算bug吧,局部变量的话,分配的内存也不一样也不影响
dozm
3楼-- · 2019-10-16 15:33
不要在中断里处理不就行了么。
操作系统
4楼-- · 2019-10-16 18:55
 精彩回答 2  元偷偷看……
憨厚诚实大叔
5楼-- · 2019-10-16 20:59
本帖最后由 憨厚诚实大叔 于 2016-12-3 12:12 编辑

+1的话,你可以用自加,自加应该是原子操作,汇编有个自加的

一周热门 更多>