打印

关于ARM的基本指令的问题(LDM和STM)

[复制链接]
3202|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sioca|  楼主 | 2009-7-1 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//////ARM版里发了没人鸟,转到这里来了
LDM 和STM编码时有一个参数P,官方文档里的解释如下:
P==1
indicates that the word addressed by Rn is included in the range of memory locations accessed, lying at the top (U==0) or bottom (U==1) of that range.
P==0 
indicates that the word addressed by Rn is excluded from the range of memory locations accessed, and lies one word beyond the top of the range (U==0) or one word below the bottom of the range (U==1).
我理解是P==1时为类似空栈的方式( Rn指的内存单元将会被使用 )
P==0时为类似满栈的方式( Rn指的内存单元将不会被使用 )

可是我又发现当LDMIA时显示P==0 (INCREASE AFTER,类似空栈)
LDMIB时P==1(INCREASE BEFORE,类似满栈)

越看越晕,不知道到底是怎样了,请大家释疑,谢谢 

相关帖子

沙发
arm_fan168| | 2009-7-1 21:36 | 只看该作者

资料有问题

确认下是不是资料的问题
请看ARM architecture reference manual.pdf,A5-42页:
P==0 indicates that the word addressed by Rn is included in the range of memory locations accessed, lying at the top (U==0) or bottom (U==1) of that range.
P==1 indicates that the word addressed by Rn is excluded from the range of memory locations accessed, and lies one word beyond the top of the range (U==0) or one
word below the bottom of the range (U==1).
正和你给出的资料相反。
LDMIA是满栈,P==0,
LDMIB是空栈,P==1.这个是没有错的。

使用特权

评论回复
板凳
ayb_ice| | 2009-7-1 21:40 | 只看该作者

ARM是支持空,满,递增,递减堆栈操作

使用特权

评论回复
地板
sioca|  楼主 | 2009-7-1 23:23 | 只看该作者

日,我看的就是ARM architecture reference manual

ADS ONLINE BOOK 里的ARM architecture reference manual,COPY下来的,怎么和你反过来了,真奇怪,ARM体系结构与设计也是反过来的。折腾了我一天

使用特权

评论回复
5
arm_fan168| | 2009-7-2 07:37 | 只看该作者

呵呵

我这个是从ARM的官方网站下载下来的,应该没错的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

419

帖子

1

粉丝