您的位置 首页 设计

关于ARM仓库的一些问题

学习ARM寻址方式的时候,里面有种寻址为堆栈寻址。ARM7中的寄存器R13就是作为堆栈指针SP的。堆栈内容的增减,就会影响堆栈指针的移动。这个…

学习ARM寻址方法的时分,里边有种寻址为仓库寻址。

ARM7中的寄存器R13便是作为仓库指针SP的。仓库内容的增减,就会影响仓库指针的移动。这个移动方向与仓库的成长方向有关。

ARM7的有两种仓库成长方向。

1.向上成长 在像仓库写入数据后,仓库指针的值变大,也便是向高地址方向成长,这种是递加仓库。

2.向下成长 在像仓库写入数据后,仓库指针的值变小,也便是向低地址方向成长,这种是递减仓库。

要注意的问题不仅仅是仓库增加方向。还要考虑到仓库指针指向的存储单元是否现已保存有仓库数据,或者说入栈时是否能够直接向仓库指针指向的存储单元写入数据。这便是“满仓库”与“空仓库”。

1.满仓库 仓库指针指向最终压入栈的有用数据项,称为满仓库。此刻仓库入栈操作要先调整指针再写入数据;

2.空仓库 仓库指针指向下一个待压入数据的空方位,称为空仓库。此刻仓库的入栈操作的入栈操作要先先写入数据再调整指针。

归纳以上叙说,就能够得到四种仓库类型,分别为满递加,空递加,满递减,空递减。

然后我想到了uc/OS-II中就有与仓库类型密切相关的东西,移植ucOS-II到相应平台上,就要考虑到仓库类型。我看书上提到ADS1.2仓库类型只支撑满递减。此刻我的问题就出来了,仓库类型详细应该是跟MCU有关,而不同的编译器又支撑不同的类型,是不是这样呢,最终我在ADS1.2文件的一个讲ATPCS的PDF中找到了答案,本来便是这样,ADS1.2只能满递减。一下便是PDF中的截图。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部