打印

中断异常入口疑问

[复制链接]
1948|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhouwenjing|  楼主 | 2010-3-16 00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhouwenjing 于 2010-3-18 20:01 编辑

0:EA000012
4:E59FF014
8:E59FF014
12:E59FF014
16:E59FF014
20:E59FF014
24:E59FF014
28:E59FF014
32:C000004
36:C000008
40:C00000C
44:C000010
48:C000014
52:C000018
56:C00001C
60:EADBEEF
64:C700000
68:C700000
72:C719154
76:BADC0DE
80:E10F0000
这些天一直在研究中断异常入口的问题,我把ARMboot的前面几个地址内容读了出来,发现除了复位的入口是跳转指令(好像是跳转到80的地址),后面的7个怎么都是0xE59FF014呢,我试着翻译了一下,好象是PC+20,由于预取和译码,PC=PC+28,貌似也是跳转,为什么不直接用b指令呢,而要用LDR呢?我是一个菜鸟,可能问题有点简单了

相关帖子

沙发
ShakaLeo| | 2010-3-16 08:45 | 只看该作者
在汇编中使用 LDR  PC, =function这样的指令,编译器会生成LDR  PC, [PC, +#20]这类的指令,而PC+20这个位置的内容是编译器构造的文字池,存储函数function的地址,函数function没有地址范围的限制。而跳转指令B是有取值范围的,印象中是在+-32MB的范围内跳转。用户在编写汇编的启动代码的时候,用LDR进行跳转可以不必考虑函数的地址范围。

使用特权

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

本版积分规则

7

主题

56

帖子

0

粉丝