51单片机仿真堆栈工作过程

挚爱单片机 2019-01-15 12:03:13
1.在函数调用工作之前(也就是第一行可执行代码),先在堆上申请变量空间,然后根据参数传递规则将寄存器内的参数传给堆内变量。需要多少堆空间,每个变量放什么位置是由编译器自动完成,用户不需要关心。 2.紧跟从函数第一行有效语句还是运行,直接使用堆上变量。 3.函数退出前,按照参数传递规则将参数传递给寄存器,并返还堆空间。 需要注意的是:1.没有使用操作系统(任务调度器)时,不用关心仿真堆栈的具体使用情况,因为无论如何程序都会返回到断点处,函数都会被完整执行(仿真堆栈有完整的使用闭环)。但是使用操作系统的,要很小心的处理堆栈使用闭环完整性问题,如果处理不当,很可能发生意想不到的错误。我在这点上遇到过跟无奈的情况,用keil 跟了一天才发现问题。 2.使用操作系统时,也只需要关心仿真堆栈指针?C_XBP(IBP),在发生中任务调度的地方将指针记录下来,下次返回任务时将指针复制到仿真堆栈中就好了。 3.关于ucosii 中仿真堆栈的处理,下次再发帖探讨。
...全文
182 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧