打印
[NXP ARM]

关于ARM中计算地址偏移量的问题?

[复制链接]
4116|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
火箭球迷|  楼主 | 2009-11-19 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM体系结构与编程》原书第14页,PDF电子版第27页,有这么一段代码:
                                SUB    R1,PC,#4        ;R1中存放下面STR指令的地址
                                STR    PC,[R0]            ;将PC=STR地址+offset保存到R0中
                                LDR    R0,[R0]            ;
                                SUB    R0,R0,R1        ;offset=PC-STR地址
原文解释:
1.(原文代码上面两行)假设R0指向可用的一个内存字,下面的代码可以在R0指向的内存字中返回该芯片所采用的地址偏移量。

2.(原文代码下面两行)在上面的讨论中,都是针对指令返回的值。该值并非在指令读取期间出现在数据总线上的值。在指令读取期间出现在数据总线上的值取决于芯片的具体实现方式。

本人存在以下疑问:

1.SUB    R1,PC,#4        ;R1中存放下面STR指令的地址,也就是说,PC-4的值就是下一条语句的地址,则PC当前指向上面代码第三句,默认偏移量是8。既然要求地址偏移量,为什么还要默认偏移量是8呢?

2.针对于原文解释1,原文说“R0指向的内存字中”返回该芯片所采用的地址偏移量,但代码最后一句的意思是R0-R1的值放在寄存器R0中,而不是R0指向的内存字中,不知道这一点是书上错了而是我理解有误?

3.针对于原文解释2,不知道这一句讲的什么意思?什么叫针对指令返回的值?什么叫指令期间出现在数据总线上的值?两者有什么区别?

望高手指点!!

相关帖子

沙发
无冕之王| | 2009-11-19 19:28 | 只看该作者
arm寻址方式,不过是告诉cpu,它现在要在哪里工作,哪里读写数据进行操作。
arm指令集,很明显,arm指令的统称。
arm汇编,关于这个,其实还有一个叫GUN汇编。都可以对arm处理器操作。是对一个代码的统称,当前代码是c的,还是汇编的。

使用特权

评论回复
板凳
hsbjb| | 2009-11-19 21:27 | 只看该作者
楼主思考的可真够仔细的

使用特权

评论回复
地板
秋天落叶| | 2009-11-22 09:38 | 只看该作者
这些原理,有点复杂

使用特权

评论回复
5
gxgclg| | 2009-11-22 18:25 | 只看该作者
对这些不是很感兴趣,看着头疼啊

使用特权

评论回复
6
司徒老鹰| | 2009-11-23 00:16 | 只看该作者
嗯,我也不是很感兴趣

使用特权

评论回复
7
sinadz| | 2009-11-23 21:41 | 只看该作者
我挺感兴趣的,原理性的东西,就是要多思考

使用特权

评论回复
8
baidudz| | 2009-11-24 09:18 | 只看该作者
我也喜欢思考,不懂的地方也经常拿到论坛上问问

使用特权

评论回复
9
司徒老鹰| | 2009-12-7 22:41 | 只看该作者
还是没人讨论……

使用特权

评论回复
10
hsbjb| | 2009-12-8 21:04 | 只看该作者
问题太多了,而且原理太强了

使用特权

评论回复
11
秋天落叶| | 2009-12-9 19:22 | 只看该作者
讨论这个问题好像意义不大,对做工程意义不大

使用特权

评论回复
12
yybj| | 2009-12-9 19:50 | 只看该作者
原理想清楚了才能做工程,不然心里没底的

使用特权

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

本版积分规则

个人签名:姚明的铁杆球迷

150

主题

3470

帖子

3

粉丝