中断向量表处的跳转处理归纳已知有下面几种:
(1)、DCD rst_proc,然后执行时候就是PC=rst_proc ,st的.s文件提供的方式。
(2)、B rst_proc, arm会对这个指令译码,然后执行。 应该不是像上面那样 把B lable 的机器码赋值给PC吧
(3)、
LDR PC,lable
lable DCD rst_proc
LDR指令把lable所在地址的内容赋值给PC,而lable的内容正是中断处理函数的起始地址。
(4)、
LDR PC,=rst_proc, 这使用的类似与MOV的操作,伪指令实现。实际的汇编后代码应该是上面第三种。
问题是,(2),(3),(4)都好理解,和用户程序一样译码执行就可以了。第一种写法理解不了,PC跳转到那里,译码一个地址的时候,为什么不是返回一个未定义错误,而是把这个值直接赋值给PC了呢。 小弟初学ARM汇编不太懂,希望大佬能帮忙解答下,谢谢。
|