打印

arm init.s这段为什么不用ldr pc,=$HandleLabel一条指令替代呢?

[复制链接]
1648|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
playlinus|  楼主 | 2008-9-25 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
$HandlerLabel
    sub    sp,sp,#4    ;decrement sp(to store jump address)
    stmfd    sp!,{r0}    ;PUSH the work register to stack(lr does't push because it return to original 
address)
    ldr     r0,=$HandleLabel;load the address of HandleXXX to r0
    ldr     r0,[r0]     ;load the contents(service routine start address) of HandleXXX
    str     r0,[sp,#4]      ;store the contents(ISR) of HandleXXX to stack
    ldmfd   sp!,{r0,pc}     ;POP the work register and pc(jump to ISR)
    MEND
;将$HandleLabel地址空间中的数据给PC,中断服务程序的入口

相关帖子

沙发
playlinus|  楼主 | 2008-9-25 15:42 | 只看该作者

就不用R0呢 ?

使用特权

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

本版积分规则

102

主题

518

帖子

2

粉丝