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

[复制链接]
2394|1
 楼主| playlinus 发表于 2008-9-25 13:05 | 显示全部楼层 |阅读模式
$HandlerLabel<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;sp,sp,#4&nbsp;&nbsp;&nbsp;&nbsp;;decrement&nbsp;sp(to&nbsp;store&nbsp;jump&nbsp;address)<br />&nbsp;&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r0}&nbsp;&nbsp;&nbsp;&nbsp;;PUSH&nbsp;the&nbsp;work&nbsp;register&nbsp;to&nbsp;stack(lr&nbsp;does't&nbsp;push&nbsp;because&nbsp;it&nbsp;return&nbsp;to&nbsp;original&nbsp;<br />address)<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=$HandleLabel;load&nbsp;the&nbsp;address&nbsp;of&nbsp;HandleXXX&nbsp;to&nbsp;r0<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;load&nbsp;the&nbsp;contents(service&nbsp;routine&nbsp;start&nbsp;address)&nbsp;of&nbsp;HandleXXX<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[sp,#4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;store&nbsp;the&nbsp;contents(ISR)&nbsp;of&nbsp;HandleXXX&nbsp;to&nbsp;stack<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;sp!,{r0,pc}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;POP&nbsp;the&nbsp;work&nbsp;register&nbsp;and&nbsp;pc(jump&nbsp;to&nbsp;ISR)<br />&nbsp;&nbsp;&nbsp;&nbsp;MEND<br />;将$HandleLabel地址空间中的数据给PC,中断服务程序的入口<br /><br />
 楼主| playlinus 发表于 2008-9-25 15:42 | 显示全部楼层

就不用R0呢 ?

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

518

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部