UCOSII小问题请教

[复制链接]
2803|3
 楼主| 我是土匪 发表于 2010-3-31 16:54 | 显示全部楼层 |阅读模式
不同任务切换,全局变量不是释放,而是压栈到任务堆栈,再次运行进行出栈操作。
栈保存现场。

除了变量,每个任务的堆栈还保存那些信息?
ShakaLeo 发表于 2010-4-2 10:04 | 显示全部楼层
任务切换的时候是把工作寄存器和状态寄存器、PC等压入堆栈,局部变量不用在任务切换的时候压栈,因为局部变量就是在任务栈中的。
zhide99 发表于 2010-4-7 20:32 | 显示全部楼层
局部变量是保存在工作寄存器中的吧,压工作寄存器其实就是保存局部变量吧
ShakaLeo 发表于 2010-4-8 13:36 | 显示全部楼层
楼上:如果用到的局部变量很少,的确有可能在寄存器中,但如果局部变量比较多,或者定义一个比较大的数组,寄存器不够用了,就会分配在栈里面了。寄存器中的内容不只是局部变量,还有运算的中间结果,以及调用函数时传递的参数等,所以压寄存器不能说是保存局部变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

226

主题

1761

帖子

30

粉丝
快速回复 在线客服 返回列表 返回顶部