打印
[ZLG-ARM]

LDR PC, [PC, #-0xff0]是什么意思?

[复制链接]
4725|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
williamt|  楼主 | 2007-8-13 11:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2007-8-13 12:00 | 只看该作者

将PC-0xff0里面的内容放到PC中

使用特权

评论回复
板凳
williamt|  楼主 | 2007-8-13 15:23 | 只看该作者

这句的目的是什么?

下面是Start.s的前面部分

;中断向量表
Reset
       
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr

ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     0
FIQ_Addr            DCD     FIQ_Handler

;未定义指令
Undefined
        B       Undefined

;软中断
SoftwareInterrupt            
        B       SoftwareInterrupt    

;取指令中止
PrefetchAbort
        B       PrefetchAbort

;取数据中止
DataAbort
        B       DataAbort

;快速中断
FIQ_Handler
        STMFD   SP!, {R0-R3, LR}
        BL      FIQ_Exception
        LDMFD   SP!, {R0-R3, LR}
        SUBS    PC,  LR,  #4
        ..................

使用特权

评论回复
地板
computer00| | 2007-8-13 16:21 | 只看该作者

不知道你买了那本书没?书上应该写了吧?或者它的数据手

它的IRQ中断可以设置为向量中断模式,而执行这条语句时,PC值为0x18,由于3级流水线,再加8,就是0x20,然后再减掉0xff0,就等于0xFFFFF030,而这个地址里面保存的内容刚好就是IRQ服务程序的地址(这个地址是在IRQ发生时,由硬件自动装进去的)。自己找个数据手册慢慢看吧,看看0xfffff030这个地址是干啥用的。

使用特权

评论回复
5
williamt|  楼主 | 2007-8-14 08:35 | 只看该作者

谢谢,好,找个资料再看看!

使用特权

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

本版积分规则

20

主题

41

帖子

0

粉丝