[MCU] 单片机堆栈的基本原理解析

[复制链接]
1113|21
 楼主| 火星国务卿 发表于 2020-9-2 19:39 | 显示全部楼层 |阅读模式

        向上生长:向高地址方向生长,称为递增堆栈

        向下生长:向低地址方向生长,称为递减堆栈

        堆栈指针指向最后压入堆栈的有效数据项,称为满堆栈;堆栈指向下一个要放入的空位置,称为空堆栈;有四种类型的堆栈表示递增和递减的满堆栈和空堆栈的各种组合。

        [/url]

        满递增:堆栈通过增大[url=http://www.hqchip.com/app/724]存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA,STMFA等。

        空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈的第一个空位置。指令如LDMEA,SRMEA等。

        满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有数据项的最低地址。指令如LDMFD,STMFD等。

        空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。指令如LDMED,STMED等。

        armrisc的机器没有自己的push pop 指令,通常使用stm LDM指令完成压入弹出操作。

        arm的使用r13=sp ,r14=lR ,r15=pc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
youtome 发表于 2020-9-3 22:10 | 显示全部楼层
堆栈是存储器中的特殊群体。   
lzbf 发表于 2020-9-3 22:10 | 显示全部楼层
堆栈其实是一种数据结构,存入数据不需要地址  
backlugin 发表于 2020-9-3 22:10 | 显示全部楼层
堆栈区在那里?低128还是高128字节单元?
backlugin 发表于 2020-9-3 22:12 | 显示全部楼层
单片机中堆栈的作用  
kkzz 发表于 2020-9-3 22:12 | 显示全部楼层
         
hudi008 发表于 2020-9-3 22:13 | 显示全部楼层
单片机的堆栈区只可设置在什么地方  
lzmm 发表于 2020-9-3 22:13 | 显示全部楼层
SP的值是怎么变化的啊?  
minzisc 发表于 2020-9-3 22:13 | 显示全部楼层
单片机如何知道堆栈溢出?  
selongli 发表于 2020-9-3 22:13 | 显示全部楼层
堆栈指针的SP的作用是什么?
fentianyou 发表于 2020-9-3 22:14 | 显示全部楼层
C语言如何全部读取和写入堆栈  
xiaoyaodz 发表于 2020-9-3 22:14 | 显示全部楼层
单片机中堆栈指令是什么寻址方式
kkzz 发表于 2020-9-3 22:14 | 显示全部楼层
谢谢楼主分享的。        
lzbf 发表于 2020-9-3 22:14 | 显示全部楼层
只需要PUSH和POP操作就可以实现数据的存储和取出,以先进后出为规则
selongli 发表于 2020-9-3 22:14 | 显示全部楼层
单片机的堆栈区应建立在哪  
minzisc 发表于 2020-9-3 22:14 | 显示全部楼层
单片机堆栈的最大容量是多少字节?
youtome 发表于 2020-9-3 22:15 | 显示全部楼层
在内RAM中专门辟出一个连续存储区,用来暂时存放子程序断口地址、中断断口地址和其他需要保存的数据。
xiaoyaodz 发表于 2020-9-3 22:15 | 显示全部楼层
堆栈是内存中一段连续的存储区域,用来保存一些临时数据
fentianyou 发表于 2020-9-3 22:15 | 显示全部楼层
单片机的堆栈与通用微机中的堆栈有何不同呢   
lzmm 发表于 2020-9-3 22:15 | 显示全部楼层
如何设置堆栈的大小         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

683

主题

1544

帖子

7

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