请问:C整形变量赋数值、++、--等是不是原子操作?

2019-12-27 18:58发布

就是如同下面的例子:

int i;

i = 123;
i++;
i--;

诸如此类......
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
37条回答
takashiki
2019-12-28 23:53
落叶知秋 发表于 2017-5-22 20:57
楼上说的对,我被坑的是ARM的32位处理器的编译器

哈哈,什么叫高级精简指令集?就是比一般精简指令集还要高级,看起来理所当然的东西到这里并不完全适用,可能会给拆得七零八落。
一个简单的自增,可能都需要先LDR地址,然后LDR或MOV数据,然后++,然后STR数据。要是没有专门的访问指令访问非32位的变量,还有额外的逻辑操作。要是硬件不支持非对齐访问,软件访问非对齐数据时额外加的东西就更多了,反汇编出来一大片。

一周热门 更多>