B跳轉指令與Ldr指令幾點區別


  • B跳轉指令是代碼位置無關的,經過匯編后會替換為當前PC值加(減)一個修正值,不管這條指令是在哪一個地址執行,都能跳轉到指定的位置。
  • B只能在當前PC的32M范圍內跳轉,LDR只能在當前PC的4KB(0xfff范圍)跳轉。
  • LDR PC,=xxx指令將向PC直接裝載一個標號xxx的值,但標號經過編譯后將被替換為一個與RO相對應的值,這樣無論指令在何處執行都能跳轉到一個指定的位置。  

歸納如下:

(1)       b step1 :b跳轉指令是相對跳轉,依賴當前PC的值,偏移量是通過該指令本身的bit[2

3:0]算出來的,這使得使用b指令的程序不依賴於要跳到的代碼的位置(位置無關碼),只看指令本身。

(2)       ldr pc, =step1 :該指令是從內存中的某個位置(step1)讀出數據並賦給PC,同樣依

賴當前PC的值,但是偏移量是那個位置(step1)的連接地址(運行時的地址),所以可

以用它實現從Flash到RAM的程序跳轉。


免責聲明!

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



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