ARM架构中的栈与宏的深入解析
1. 栈的增长方式
在ARM架构里,栈依据其在内存中的增长方式进行分类。栈在数据入栈时,既可以向内存地址增大的方向增长(升序栈),也能向内存地址减小的方向增长(降序栈)。这就如同在太空中,“上”和“下”的概念是相对的。打个比方,站在一栋20层空楼的第10层,第10层是唯一的入口,上下每层都有4套公寓。现在来了8个家庭,你可以选择让他们住在往上两层或者往下两层,具体怎么安排就看你的选择了。
从计算机内存的角度来看,升序栈在数据入栈时,栈指针的地址会增大,每入栈一个元素,栈指针的地址就增加4字节;而降序栈在数据入栈时,栈指针的地址会减小。总体而言,ARM架构中有四种类型的栈,具体如下表所示:
| 后缀 | 含义 |
|---|---|
| FA | 满升序栈 |
| FD | 满降序栈 |
| EA | 空升序栈 |
| ED | 空降序栈 |
当栈指针指向栈中最后一个已占用的地址时,该栈被称为满栈;当栈指针指向栈中下一个可用的空闲空间时,则称为空栈。需要注意的是,这里的空栈并不意味着栈中没有数据,它只是表示栈中下一个空闲字的状态。
在实际编程中,选择满栈、空栈、升序栈还是降序栈
超级会员免费看
订阅专栏 解锁全文
1651

被折叠的 条评论
为什么被折叠?



