流⽔线技术通 过多个功能部件并⾏⼯作来缩短程序执⾏时间,提⾼处理器核的效率和吞吐率,从⽽成为微处理
器设计中最为重要的技术之⼀。ARM7处理器核使⽤了典型三级流⽔线的冯·诺伊曼结构,ARM9系列则采⽤了
基于五级流⽔线的哈佛结构。通过增加流⽔线级数简化了流⽔线各级的逻辑,进⼀步提⾼了处理器的性能。
PC代表程序计数器,流⽔线使⽤三个阶段,因此指令分为三个阶段执⾏:1.取指(从存储器装载⼀条指令);
2.译码(识别将要被执⾏的指令);3.执⾏(处理指令并将结果写回寄存器)。⽽R15(PC)总是指向“正在取 指”的指令,⽽不是指向“正在执⾏”的指令或正在“译码”的指令。⼀般来说,⼈们习惯性约定将“正在执⾏的指令 作为参考点”,称之为当前第⼀条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节⻓,所 以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执⾏位置+8;
ARM指令是三级流⽔线,取指,译指,执⾏,同时执⾏的,现在PC指向的是正在取指的地址(下⼀条指令),
那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,⼀个指令占4个字节),cpu正在执⾏的指令地址是
PC-8,也就是说PC所指向的地址和现在所执⾏的指令地址相差8。
当突然发⽣中断的时候,保存的是PC的地址(PC-8+4 = PC-4 下⼀条指令的地址) 这样你就知道了,如果返回的时候返回PC,那么中间就有⼀个指令没有执⾏,所以⽤SUB pc lr-irq #4。