2019-12-27 18:58发布
snoopyzz 发表于 2017-5-22 20:45 stm8系列里用cosmic编译器, 8位和16位变量都是原子操作++ --,不会因为中断而得到中间值 ...
wye11083 发表于 2017-5-22 20:47 这操作是单指令周期的。。。不涉及分拆
落叶知秋 发表于 2017-5-22 20:57 楼上说的对,我被坑的是ARM的32位处理器的编译器
最多设置5个标签!
这操作是单指令周期的。。。不涉及分拆
对呀, 所以别说一定不是...要分具体芯片, 变量情况 , 编译器
哈哈,什么叫高级精简指令集?就是比一般精简指令集还要高级,看起来理所当然的东西到这里并不完全适用,可能会给拆得七零八落。
一个简单的自增,可能都需要先LDR地址,然后LDR或MOV数据,然后++,然后STR数据。要是没有专门的访问指令访问非32位的变量,还有额外的逻辑操作。要是硬件不支持非对齐访问,软件访问非对齐数据时额外加的东西就更多了,反汇编出来一大片。
我用的是cortex M3 内核,请问有什么办法?
比如在主程序和中断中都要操作某个全局变量。
一周热门 更多>