UCOS任务中调用子函数,那么原函数的地址和局部变量保存在该任务堆栈中吗

另外,这个任务是如何确定当期堆栈的地址的啊... 另外,这个任务是如何确定当期堆栈的地址的啊 展开
 我来答 举报
joyoustech
2013-06-04 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1342万
展开全部
任务中调用函数,调用处的地址和一些变量自然要保存在任务堆栈中,每个任务的堆栈地址和大小是用OS_STK变量定义的,堆栈中的内容是在任务初始化时一起初始化的,初始化函数是:
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *pdata, OS_STK *ptos, unsigned int opt);
这个函数是移植uCos时要自己完成的函数,也是整个移植过程中最难理解的函数,理解了这个函数,移植应该就没有问题了。
追问
那当任务挂起时,该任务的堆栈中只保存了CPU相关寄存器的值,而没有上面所说的函数调用时的须保存到堆栈的地址和变量?
追答
如果任务不是在子函数中挂起的,任务堆栈中是不会有子函数的返回地址。如果任务是在子函数中挂起的,应该能从任务堆栈中看到子函数返回的地址。
本回答被提问者采纳
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论(1) 举报 收起
网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式