返回連線暫存器 LR 詳解

2021-06-21 14:06:37 字數 982 閱讀 6605

異常的發生會導致程式正常執行的被打斷, 並將控制流轉移到相應的異常處理(異常響應),有些異常(fiq、irq)事件處理後,系統還希望能回 到當初異常發生時被打斷的源程式斷點處繼續完成源程式的執行(異常返回),這就需要一種解決方案, 用於記錄源程式的斷點位置,以便正確的異常返回。

類似的還有子程式的呼叫和 返回。在主程式中(通過子程式呼叫指令)呼叫子程式時,也需要記錄下主程式中的呼叫點位置,以便將來的子程式的返回。

在arm處理器中使用 r14實現對斷點和呼叫點的記錄,即使用r14用作返 回連線暫存器(lr)。在硬體上和指令執行上,cpu 自動完成相應返回點的記錄。在arm 組合語言程式設計時,r14和lr通用。

arm處理器相應異常時,會自動完成將當前的pc儲存到lr暫存器。

arm處理器執行子程式呼叫指令(bl )時,會自動完成將當前的pc的值減去4的結果資料儲存到lr暫存器。即將呼叫指令的下緊鄰指令的位址儲存到lr。

arm處理器針對不同的模式,共有6個鏈結暫存器資源(lr),其中使用者模式和系統模式共用乙個 lr,每種異常模式都有各自專用的r14 暫存器(lr )。這些鏈結暫存器分別為 r14、r14_svc、r14_abt、r14_und、r14_irq、r14_fiq,

程式設計者要清晰處理器的模式與相應 暫存器的對應關係,都是使用 r14,但不同模式下的r14 不是同乙個物理資源,其內容可能天壤之別。

r14 不用做鏈結暫存器(lr )時,也可以用做通用資料暫存器。

轉 自:

暫存器詳解

暫存器 注 名字以字母 e 開頭的暫存器表示32位,如eax 32位,ax 16位,al是低8位,ah是8 15位 32位cpu的8個通用暫存器 eax,ebx,ecx,edx,ebp,esp,esi,edi 資料暫存器eax,ebx,ecx,edx eax 累加暫存器,是很多加法乘法指令的預設暫存...

暫存器(通用暫存器)

因為學習使用的是王爽的 組合語言 第3版 因此也只能提到8086cpo的暫存器。對於其他而言,原理都是相通的。對於8086暫存器,有14個暫存器,主要是 ax bx cx dx si di sp bp ip cs ss ds es psw。一 通用暫存器 8086的通用暫存器有ax bx cx dx...

暫存器,標誌暫存器

涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...