ARM中LR存储的是执行BL或者BLX指令后,PC的值,用于保存函数调用的返回地址。IR存储的是下一条将要执行的指令,有什么区别? 先看定义: (1)PC是程序计数器,存储将要执行的指令地址 (2)LR是链接寄存器,是ARM处理器中一个有特殊用途的寄存器,当调用函数时,返回地址即PC的值被保存到LR中(mov lr,pc)。 (3)IR是指令寄存器,用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。 区别: (1)IR是微体系结构概念(什么是微体系结构?就是程序员看不到,但硬件中确实存在的硬件逻辑,只有系统设计者知道其存在。),而LR是程序员可见的寄存器。比如用gdb调试程序时,如果打印LR寄存器内容是可以看到其值的,但是打印IR是不可能的。 (2)LR是PC的备份,PC寄存器存的是将要执行的指令的地址;IR存的是将要送到ALU等部件执行的指令内容。 暂时只想到这些,欢迎补充。 |
|