歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> ARM Cortex-M3 B[x]指令詳解

ARM Cortex-M3 B[x]指令詳解

日期:2017/3/1 10:30:56   编辑:Linux編程

B指令
B指令的格式為:
B{條件} 目標地址
B指令是最簡單的跳轉指令。一旦遇到一個 B 指 令,ARM 處理器將立即跳轉到給定的目標地址,從那裡繼續執行。注意存儲在跳轉指令中的實際值是相對當前PC值的一個偏移量,而不是一個絕對地址,它的值由匯編器來 計算(參考尋址方式中的相對尋址)。它是 24 位有符號數,左移兩位後有符號擴展為 32 位,表示的有效偏移為 26 位(前後32MB的地址空間)。以下指令:
B Label ;程序無條件跳轉到標號Label處執行
CMP R1,#0 ;當CPSR寄存器中的Z條件碼置位時,程序跳轉到標號Label處執行
BEQ Label

舉例:

B ResetHandler; //復位

B .

B .

. 表示當前地址。 B . 跳轉到當前地址。意思是說進入死循環當中。

通過 B BL BLX BX 可以完成在當前指令向前或者向後32MB的地址空間的跳轉(為什麼是32MB呢?寄存器是32位的,此時的值是24位有符號數,所以32MB)。B是最簡單的跳轉指令。要注意的是,跳轉指令的實際值不是絕對地址,而是相對地址——是相對當前PC值的一個偏移量,它的值由匯編器計算得出。BL非常常用。它在跳轉之前會在寄存器LR(R14)中保存PC的當前內容。
BL的經典用法如下:
bl NEXT ; 跳轉到NEXT
……
NEXT
……
mov pc, lr ; 從子程序返回。

Copyright © Linux教程網 All Rights Reserved