您的位置 首页 报告

关于ARM体系的仓库

堆栈严格来说应该叫做栈,栈(Stack)是限定仅在一端进行插入或删除操作的线性表。因此,对栈来说,可以进行插入或删除操作的一端端称为栈顶(…

仓库严格来说应该叫做栈,栈(Stack)是限制仅在一端进行刺进或删去操作的线性表。因此,对栈来说,能够进行刺进或删去操作的一端端称为栈顶(top),相应地,另一端称为栈底(bottom)。不含元素的空表称为空栈。我们仓库只允许在一端进行操作,因此依照后进先出(LIFO-Last In First Out)的原理运作。

从栈顶的界说来看,栈顶的方位是可变的。空栈时,栈顶和栈底重合;满栈时,栈顶离栈底最远。ARM为仓库供给了硬件支撑,它运用一个专门的寄存器(仓库指针)指向仓库的栈顶。而且7种形式都有各自独立的仓库指针,也便是有各自独立的仓库空间。但这儿的仓库和uC/OS操作系统的使命仓库又有差异,uC/OS的每个使命都有自己的仓库,要是把uC/OS移植到ARM上,能够凭借ARM的仓库指针来完成。存储器仓库可分为两种:
向上成长:向高地址方向成长,称为递加仓库
向下成长:向低地址方向成长,称为递减仓库

仓库指针指向最终压入的仓库的有用数据项,称为满仓库;仓库指针指向下一个要放入的空方位,称为空仓库。这样就有4中类型的仓库一共递加和递减的满仓库和空仓库的各种组合。

满递加:仓库经过增大存储器的地址向上增加,仓库指针指向内含有用数据项的最高地址。指令如LDMFA,STMFA等。

空递加:仓库经过增大存储器的地址向上增加,仓库指针指向仓库上的第一个空方位。指令如LDMEA,STMEA等。

满递减:仓库经过减小存储器的地址向下增加,仓库指针指向内含有用数据项的最低地址。指令如LDMFD,STMFD等。

空递减:仓库经过减小存储器的地址向下增加,仓库指针指向仓库下的第一个空方位。指令如LDMED,STMED等。

有一点需求留意的是,尽管ARM处理器核关于两种成长方法的仓库均支撑,但ADS的C言语编译器仅支撑一种方法,即从上往下长,而且有必要是满递减仓库。所以STMFD等指令用的最多。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/264437.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部