ARM中 中断干的事:
当发生中断时,系统不会马上转向执行中断,而是做了下面事:①继续执行完当前的指令,②将此时PC的值减去4后放入中断模式下的链接寄存器R14_irq,将状态寄存器中的值复制到中断模式下的备用状态寄存器SPSR_irq中;③将PC指针强制转到中断服务程序入口地址。
要注意的是:①执行完当前的指令,由于流水线技术,保存在链接寄存器中的PC值其实是将要执行指令的下一条指令。流水线:取指令(放在PC中),译码,执行,。。。五级流水线技术,当前取指令放在PC中,所以当前正在执行的指令的地址是PC-8,译码的指令的地址是PC-4.
②在中断返回时,ARM啥事也没做即 没有进行任何现场的恢复
③中断子程序 既无参数 也无返回值
软中断干的事:
主要就是将工作模式转换到管理模式下。干的事情是,系统调用软中断函数,那么马上进行模式的转换,并不是执行完当前的指令再进行转换,然后进行现成的保护,和硬中断一样做了两方面现场的保护。不同的是,此时保护的PC-4正好是将来返回时需要执行指令的地址。
要注意的是:①软中断需要有个参数,即软中断号,此号是在创建软中断函数时人为设定的。在模式转换时,软中断号被保存在了当时正在执行的指令的后24位中。