百度百科中说栈可以在函数调用时存储断点,那么存储断点是什么意思啊?栈怎么用呢?

百度百科中说栈可以在函数调用时存储断点,那么存储断点是什么意思啊?栈怎么用呢?,第1张

你可以把断点理解为程序跳转前的地址。我们知道一个可执行程序有他自己的代码段、数据段,代码段存放程序的一条一条指令,当 *** 作系统载入程序时,会将执行指针指向程序代码段的第一条指令的地址,然后顺序执行。当遇到函数调用的时候, *** 作系统会保存当前指令的地址(把该地址存到一个叫做“栈”的数据结构中),然后当调用函数运行结束后, *** 作系统会从“栈”中取出保存的指令地址,再顺序执行。

保存断点的“栈”是由 *** 作系统自己分配的,用户是感觉不到的。你如果想了解栈的话,建议你看看数据结构相关的书籍。

楼上已经介绍得很清楚了。

补充一点:如果你的任务切换是在中断服务函数中直接进行的(跳转到中断向量之后,修改SP到指定任务栈并直接切换),那么记得要用 RETI 来进行任务切换,否则这个过程中产生的其它中断请求会丢失。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11574389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存