在单片机中什么是堆栈?它的作用是什么?

 我来答
小林学长123
2019-09-19 · 专注于分享数码相关知识
小林学长123
采纳数:550 获赞数:507841

向TA提问 私信TA
展开全部

在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。对这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;用寄存器构成的堆栈,叫硬件堆栈。


扩展资料:

栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

参考资料来源:百度百科-栈

参考资料来源:百度百科-堆栈

傲天异族
推荐于2017-09-03 · TA获得超过224个赞
知道答主
回答量:53
采纳率:0%
帮助的人:52.8万
展开全部
堆栈是进入中断的时候用到的,单片机一旦遇到中断请求,就会去处理中断,处理完后再回来处理主程序,这样就涉及到了一个问题,单片机要保存中断之前的信息,以便处理完后能够回到主程序中,单片机会在响应中断前,把单片机现在的指针地址(也就是处理完要返回的地址),以及一些必要的数据压入堆栈(没有这些数据,单片机处理完中断后就无法确定主程序的状态)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一纸繁华摩羯
推荐于2018-01-03
知道答主
回答量:8
采纳率:100%
帮助的人:2556
展开全部

在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。

  1. 子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹栈。

  2. 保护现场/恢复现场

  3. 数据传输

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星柠科草说2807
2011-03-13 · TA获得超过317个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:351万
展开全部
保存返回的地址,状态,需保存的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白菜shan
2017-09-10 · TA获得超过2152个赞
知道小有建树答主
回答量:1475
采纳率:60%
帮助的人:775万
展开全部
华科的学生吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式