ARM匯編: B、BL 與R14(LR)、R15(PC)


 

 

1. b與bl指令的作用是什么?

    b與bl指令的作用:實現程序跳轉,也就是調用子程序。

2. b與bl指令的區別是什么?

    b與bl指令的區別:

     b指令:簡單的程序跳轉,跳轉到到目標標號處執行。

     bl指令:帶鏈接程序跳轉,也就是要帶返回地址。在發生跳轉前,將當前PC-4保存到R14中。也就是返回地址存在R14中,所以可以在子程序返回時只要MOV PC, LR即可。

 

3. 什么是R14?

   在ARM處理器中使用 R14實現對斷點和調用點的記錄,即使用R14用作返回鏈接寄存器(LR )。

   在硬件上和指令執行上,CPU自動完成相應返回點的記錄。在ARM 匯編語言程序設計時,R14和LR通用。

  3.1

   ARM處理器相應異常時,會自動將當前的PC值保存到LR寄存器。

  3.2

   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 )時,也可以用做通用數據寄存器。

 

4. 

   ARM 處理器中使用R15 作為PC,它總是指向取指單元,並且ARM 處理器中只有一個PC 寄存器,被各模式共用。R15 有32 位寬度, 可以直接尋址4GB的地址空間(2^32 = 4G)。

 

   ARM 體系要求32 位長的ARM 指令在存儲器中必須字對齊存儲,16 位長的 Thumb 指令必須半字對齊存儲

   因此,在ARM 狀態下,R15的值總是能被4 整除,也就是R15寄存器的最低2位總是0; Thumb 狀態下,R15的值總是能被2整除,也就是R15寄存器的最低位總是0。

 

 

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM