R14是LR 即Link Register,该寄存器的作用有两种。
1.存放当前子程序的返回地址。当通过BL和BLX指令调用的子函数,R14中存储着该子函数的返回地址。在子函数中可以通过将R14中的值copy到PC,实现子函数返回。
2.在异常中断时,R14存储该异常模式将返回的地址。
由于ARM的流水线方式,MOV LR PC 时,LR中是当前地址的后两个指令的地址。如果MOV PC PC则会跳转两条指令。
关于SPSR则是CPSR的一个备份寄存器,不过USR和SYS这两种模式并没有该寄存器,其余的五种模式则存在。该register则是存储切换mode时前一个mode的CPSR。如进入SVC mode,则SVC mode的SPSR则存储着进入SVC mode前一个mode的CPSR,方便在退出该mode,恢复前一个mode时CPSR的恢复,则只需将SPSR复制进CPSR就行了。
阅读(1120) | 评论(0) | 转发(0) |