任务栈里到底存放的是一些什么东西?这个我觉得有必要弄清楚。C语言的栈也是,中断发生时,栈保存的是当前函数的什么,指令地址和寄存器值么?
任务控制块为什么那么设计?
经过各种资料我应该可以确定为是 寄存器 和 程序计数器
程序计数器肯定是要保存的,寄存器也是各个资料都讲到了的。
我现在发现,程序计数器其实也是保存在一个寄存器里面的值,所以上面可以统一归为保存寄存器。我之所以这么想也是看下面给我的感受,完整课放大的照片可以往下翻,这里只是附上截图。
其实想想本质就是各种寄存器嘛,你不管什么值不都是保存在内存里,寄存器本质就是内存嘛。
下面拍自原子的freertos书
https://baike.baidu.com/item/%E4%B8%8A%E4%B8%8B%E6%96%87%E5%88%87%E6%8D%A2/4842616?fr=aladdin
https://blog.csdn.net/weixin_40599145/article/details/88032916
看freertos的任务切换函数的具体步骤,你会发现里面大部分步骤都是在保存寄存器的值
拍自正点原子的《FreeRTOS源码详解与应用开发》
。