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

学习
页: 1 2 3 4 5 [6] 7
查看完整版本: STC 原生RTOS PK 移植RTOS