栈在程序中的作用(ARM结构)

来源:互联网 发布:掌上电力老是网络错误 编辑:程序博客网 时间:2024/05/29 02:48

大家肯定学习过了栈这一结构,也知道栈的基本特性,可是栈如何在程序中起作用,特别是C语言中,是不多的。所以今天就来分享一下栈在程序中的作用。

首先读这篇文章之前,读者首先要了解两个基本的概念。

 1、根据SP指针指向的位置,栈可以分为满栈和空栈

(1)满栈:  堆栈指针SP总是指向最后压入堆栈的数据。

(2)空栈: 堆栈指针SP总是指向下一个将要放入数据的空位置。


2、根据SP指针移动的方向,栈可以分为升栈和降栈

(1)升栈: 随着数据的入栈,SP指针从低地址——>高地址

(2)降栈: 随着数据的入栈,SP指针从高地址——>低地址


  ARM采用的是  满降栈

下面是一个栈在程序运用中的实例  

 第一排为源代码,第二排为汇编代码,第三排为注释

1.主函数

2 子函数



总结: 从以上实例看出,栈在程序中作用有传递参数,保存寄存器的值和保存局部变量。 在传递参数的过程中,如果传递参数少于四个,则直接用寄存器传递。若传递参数多于四个,则使用寄存器+内存传递。

大家可以把SP指针和FP指针的移动结合内存示意图来更好理解栈在程序的应用。

1 0
原创粉丝点击