新闻中心

EEPW首页>嵌入式系统>设计应用> 对ARM堆栈的理解

对ARM堆栈的理解

作者: 时间:2016-11-24 来源:网络 收藏
堆栈其实就是内存中的一段连续空间,只是有了堆栈指针,所以显得比较特别,堆栈一般分为两种:
向上生长:堆栈指针向高地址方向生长,称为递增堆栈。
向下生长:堆栈指针向低地址方向生长,称为递减堆栈。
对于堆栈来说,可以进行插入或者删除操作的一端称为栈顶,相应的,另一端称为栈底,由于堆栈只允许在一端进行操作,因而按照后进先出的原理进行运作。堆栈指针指向最后一个压入堆栈的有效数据项。
为什么说“向上生长或向下生长”呢,这是一个习惯的问题,一般画堆栈示意图,习惯上把低地址画在下面,高地址画在上面,如下图所示:
ARM中,虽然对两种方式的堆栈均支持,但是一般程序编译器仅支持一种方式,即从上往下生长,满足满递减的方式(堆栈通过减小存储器的地址向下增长,堆栈指针指向含有有效数据项的最低地址),所以一般会使用LDMFD,STMFD等指令。


关键词:ARM堆栈连续空

评论


技术专区

关闭