一向困惑,中止向量表的运转机制,从软件视点来说是说不通的,由于中止向量表选用的不是分支挑选程序,而是次序履行的跳转指令LDR或B,我想许多初学者一定有这样的困惑;
咱们有必要细心了解ARM的中止运转是什么样一个状况:
1进入反常:1)将本来履行的程序的下一条指令保存到LR中;这个好了解;2)仿制CPSR到呼应的SPSR中进行保存,这是为了保存反常前的状况;3)依据产生的反常类型改动CPSR形式的值;4)令程序计数器PC的值指向反常处理向量所指的下一条指令。这句话很要害,ARM内核呼应反常后使PC值强制指向反常处理向量所指的下一条指令,而不是软件完结的,不然脑袋想破都没有用。
PC值改动也就改动了程序的履行,跳转到详细的中止程序,而中止向量表是预先设定好的放置中止跳转指令的“表”;跳转到向量表则是由ARM内核完结。
这是纠结了几晚的工作,应该是正确的了解了,发出来供商讨