CosyOS
发表于 2023-10-24 00:36:08
本帖最后由 CosyOS 于 2023-10-24 02:23 编辑
fanxsp 发表于 2023-10-23 23:37
关于单字节变量的原子操作问题,我之前的想法和你是一样,后来发现这种想法也是不对的。比如,有一个单字 ...
你说的问题很好,这其实涉及到两方面的问题,一个是全局变量写访问,一个是全局变量自运算。
1、如果是单纯的写访问,如果一条汇编指令能够完成最终的写操作,那么它就是原子操作,无论它费了多大的功夫去寻址。
2、如果是自运算的话,那么通常只在两种情况下会是原子操作:
(1)51/251,data上的单字节变量的自加一或自减一,编译后会使用INC、DEC指令,直接在data上运算,一步完成,是原子操作;
(2)GNU的全局寄存器变量自运算,会在寄存器上直接运算,一般也是原子操作。
3、其它的全局变量自运算,则一般都不是原子操作,原因是整个自运算的过程要分为读(读到寄存器中)、运算、写(写回全局变量),
共三步,这三步是一个整体不可分割,一旦被打断,其它的任务或中断又写了它或对它做了自运算,就会出错。
4、上述只是在一般情况下,并非绝对,最终需查看反汇编代码,看整个自运算过程的汇编指令是否只有一条指令,才能100%的确定是否是原子操作。
5、最后再补充一点,什么是自运算:
常见的自运算包括:++、--、/=、*=、%=、+=、-=、<<=、>>=、&=、^=、|=,及它们的展开式,如 i = i + 5,i = i << 8等。
HJJDSTC
发表于 2023-12-29 10:58:54
是不是错了
lzzasd
发表于 2023-12-29 11:50:22
楼主有使用说明吗
CosyOS
发表于 2023-12-29 12:09:18
本帖最后由 CosyOS 于 2023-12-29 12:14 编辑
lzzasd 发表于 2023-12-29 11:50
楼主有使用说明吗
你看下面这个帖子啊,什么都有
全局不关总中断的RTOS / CosyOS-II for STC MCU
https://www.stcaimcu.com/forum.p ... 1807&extra=page%3D1
有各种示例代码、使用说明等,顶楼提供下载!
13918210822
发表于 2023-12-29 16:49:53
杨为民 发表于 2023-5-21 23:27
原生的RTOS与移植的RTOS所占储存空间的比较(1)CosyOS是原生的RTOS,FreeRTOS移植的RTOS,两者皆有STC32G ...
又没有类似Linux一样的开源免费授权的 STCRTOS?
fengye1512
发表于 2024-9-10 16:21:16
学习
大叶子
发表于 2024-9-11 07:51:11
说的有道理,上连接个stc原生的RTOS下载包吧
wlhet
发表于 2024-11-1 08:39:55
来学习一下
hhaayy
发表于 2025-1-2 15:43:49
CosyOS 发表于 2023-10-24 00:36
你说的问题很好,这其实涉及到两方面的问题,一个是全局变量写访问,一个是全局变量自运算。
1、如果是单 ...
围观
凡心
发表于 2025-2-6 11:53:30
学习