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 等部件执行的指令内容。