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