ARM数据栈的使用规则

ARM数据栈的使用规则
     数据栈有两个增长方向:向内存地址减小的方向增长时,称为DESCENDING栈;向内存地址增长的方向增长时,称为ASCENDING栈。
     所谓数据栈的增长方向就是移动栈指针。当栈指针指向栈顶元素(最后一个入栈的数据)时,称为FULL栈;当栈指针指向栈顶元素(最后一个入栈的数据)相邻的一个空的数据单元时,称为EMPTY栈。
     综合这两点,数据栈可以分为以下4种。
     1.FD:Full Descending,满递减。
     2.ED: Empty Descending,空递减。
     3.FA:Full Ascending,满递增。
     4.EA:Empty Ascending,空递增。
     ARM的ATPCS规定数据栈为FD类型,并且对数据栈的操作是8字节对齐的。使用stmdb/ldmia批量访问内存指令来操作FD数据栈。
     使用stmdb命令往数据栈中保存内容时,先递减sp指针,再保存数据,使用ldmia命令从数据栈中恢复数据时,先获得数据,再递增sp指针,sp指针总是指向栈顶元素,这刚好是FD栈的定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值