ARM中LR存儲的是執(zhí)行BL或者BLX指令后,,PC的值,,用于保存函數(shù)調(diào)用的返回地址。IR存儲的是下一條將要執(zhí)行的指令,,有什么區(qū)別,? 先看定義: (1)PC是程序計數(shù)器,存儲將要執(zhí)行的指令地址 (2)LR是鏈接寄存器,,是ARM處理器中一個有特殊用途的寄存器,,當(dāng)調(diào)用函數(shù)時,返回地址即PC的值被保存到LR中(mov lr,pc),。 (3)IR是指令寄存器,,用來保存當(dāng)前正在執(zhí)行的一條指令。當(dāng)執(zhí)行一條指令時,,先把它從內(nèi)存取到數(shù)據(jù)寄存器(DR)中,,然后再傳送至IR。 區(qū)別: (1)IR是微體系結(jié)構(gòu)概念(什么是微體系結(jié)構(gòu),?就是程序員看不到,,但硬件中確實存在的硬件邏輯,只有系統(tǒng)設(shè)計者知道其存在,。),,而LR是程序員可見的寄存器。比如用gdb調(diào)試程序時,,如果打印LR寄存器內(nèi)容是可以看到其值的,,但是打印IR是不可能的。 (2)LR是PC的備份,,PC寄存器存的是將要執(zhí)行的指令的地址,;IR存的是將要送到ALU等部件執(zhí)行的指令內(nèi)容。 暫時只想到這些,,歡迎補(bǔ)充,。 |
|