对ARM堆栈的理解
向上生长:堆栈指针向高地址方向生长,称为递增堆栈。
向下生长:堆栈指针向低地址方向生长,称为递减堆栈。
对于堆栈来说,可以进行插入或者删除操作的一端称为栈顶,相应的,另一端称为栈底,由于堆栈只允许在一端进行操作,因而按照后进先出的原理进行运作。堆栈指针指向最后一个压入堆栈的有效数据项。
为什么说“向上生长或向下生长”呢,这是一个习惯的问题,一般画堆栈示意图,习惯上把低地址画在下面,高地址画在上面,如下图所示:

ARM中,虽然对两种方式的堆栈均支持,但是一般程序编译器仅支持一种方式,即从上往下生长,满足满递减的方式(堆栈通过减小存储器的地址向下增长,堆栈指针指向含有有效数据项的最低地址),所以一般会使用LDMFD,STMFD等指令。
评论