ARM中pc、lr寄存器



PC(程序計數器)  = windows 中 EIP
解析:
處理器要執行的程序(指令序列)都是以二進制代碼序列方式預存儲在計算機的存儲器中,處理器將這些代碼逐條
地取到處理器中再譯碼、執行,以完成整個程序的執行。爲了保證程序能夠連續地執行下去,CPU必須具
有某些手段來確定下一條取指指令的地址.程序計數器(PC)正是起到這種作用,所以通常又稱之爲‘指令計數器’
。CPU總是按照PC的指向對指令序列進行取指、譯碼和執行,也就是說,最終是PC 決定了程序運行流向。故而,程
序計數器(PC )屬於特別功能寄存器範疇,不能自由地用於存儲其他運算數據.

在程序開始執行前,將程序指令序列的起始地址,即程序的第一條指令所在的內存單元地址送入PC,CPU 按照 PC
的指示從內存讀取第一條指令(取指)。當執行指令時,CPU自動地修改PC 的內容,即每執行一條指令PC增加一個
量,這個量等於指令所含的字節數(指令字節數),使 PC總是指向下一條將要取指的指令地址。由於大多數指令都
是按順序來執行的,所以修改PC 的過程通常只是簡單的對PC 加“指令字節數”。
    當程序轉移時,轉移指令執行的最終結果就是要改變PC的值,此PC值就是轉去的目標地址。處理器總是按照PC
 指向取指、譯碼、執行,以此實現了程序轉移。


R14(lr)連接寄存器

R14稱爲子程序鏈接寄存器LR(Link Register),當執行子程序調用指令(BL)時,R14可得到R15(程序計數器PC)的備
份.在每一種運行模式下,都可用R14保存子程序的返回地址,當用BL或BLX指令調用子程序時,將PC的當前值複製給
R14,執行完子程序後,又將R14的值複製回PC,即可完成子程序的調用返回。以上的描述可用指令完成。
執行以下任意一條指令:
MOV PC,LR
BX LR
在子程序入口處使用以下指令將R14存入堆棧:
STMFD SP!,{,LR}
對應的,使用以下指令可以完成子程序返回:
LDMFD SP!,{,PC}
R14也可作爲通用寄存器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章