久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: B BL BLX BX詳解 [打印本頁(yè)]

作者: 51黑er    時(shí)間: 2015-11-9 15:04
標(biāo)題: B BL BLX BX詳解
B、BL、BX、BLX 和 BXJ
跳轉(zhuǎn)、帶鏈接跳轉(zhuǎn)、跳轉(zhuǎn)并切換指令集、帶鏈接跳轉(zhuǎn)并切換指令集、跳轉(zhuǎn)并轉(zhuǎn)換到 Jazelle 狀態(tài)。
語(yǔ)法
op1{cond}{.W} label
op2{cond} Rm
其中:
op1
是下列項(xiàng)之一:
B
跳轉(zhuǎn)。
BL
帶鏈接跳轉(zhuǎn)
BLX
帶鏈接跳轉(zhuǎn)并切換指令集。
op2
是下列項(xiàng)之一:
BX
跳轉(zhuǎn)并切換指令集。
BLX
帶鏈接跳轉(zhuǎn)并切換指令集。
BXJ
跳轉(zhuǎn)并轉(zhuǎn)換為 Jazelle 執(zhí)行。
cond
是一個(gè)可選的條件代碼。 cond 不能用于此指令的所有形式。
.W
是一個(gè)可選的指令寬度說(shuō)明符,用于強(qiáng)制要求在 Thumb-2 中使用 32 位 B 指令。
label
是一個(gè)程序相對(duì)的表達(dá)式。
Rm
是一個(gè)寄存器,包含要跳轉(zhuǎn)到的目標(biāo)地址。
操作
所有這些指令均會(huì)引發(fā)跳轉(zhuǎn),或跳轉(zhuǎn)到 label,或跳轉(zhuǎn)到包含在 Rm 中的地址處。 此外:
BL 和 BLX 指令可將下一個(gè)指令的地址復(fù)制到 lr(r14,鏈接寄存器)中。
BX 和 BLX 指令可將處理器的狀態(tài)從 ARM 更改為 Thumb,或從 Thumb 更改為 ARM
BLX label 無(wú)論何種情況,始終會(huì)更改處理器的狀態(tài)。
BX Rm 和 BLX Rm 可從 Rm 的位 [0] 推算出目標(biāo)狀態(tài):
如果 Rm 的位 [0] 為 0,則處理器的狀態(tài)會(huì)更改為(或保持在)ARM 狀態(tài)
如果 Rm 的位 [0] 為 1,則處理器的狀態(tài)會(huì)更改為(或保持在)Thumb 狀態(tài)。
BXJ 指令會(huì)將處理器的狀態(tài)更改為 Jazelle。
指令可用性和跳轉(zhuǎn)范圍
下表給出了可在 ARM 和 Thumb 狀態(tài)下使用的指令。 此表中未列出的指令不可在這兩種狀態(tài)下使用。 括號(hào)中的注釋給出了第一個(gè)可在其中使用指令的體系結(jié)構(gòu)版本。
Table 4.7. 跳轉(zhuǎn)指令的可用性和范圍
指令
ARM

16 位 Thumb
32 位 Thumb
B label
±32MB
(所有)
±2KB
(所有 T)
±16MB
(所有 T2)
B{cond} label
±32MB
(所有)
–252 到 +258
(所有 T)
±1MBa
(所有 T2)
BL label
±32MB
(所有)
±4MB
(所有 T)
±16MB
(所有 T2)
BL{cond} label
±32MB
(所有)
-

-
-
BX Rm
可用
(4T,5)
可用
(所有 T)
使用 16 位
(所有 T2)
BX{cond} Rm
可用
(4T,5)
-

-
-
BLX label
±32MB
(5)
±4MB [2]
(5T)
±16MB
(除 ARMv7-M 之外的所有 T2)
BLX Rm
可用
(5)
可用
(5T)
使用 16 位
(所有 T2)
BLX{cond} Rm
可用
(5)
-

-
-
BXJ Rm
可用
(5J,6)
-

可用
(除 ARMv7-M 之外的所有 T2)
BXJ{cond} Rm
可用
(5J,6)
-

-
-
[1使用 .W 可指示匯編器使用此 32 位指令。
[2這是一個(gè)指令對(duì)。

擴(kuò)展跳轉(zhuǎn)范圍
機(jī)器級(jí)指令 B 和 BL 對(duì)當(dāng)前指令有地址范圍限制。 但是,即使label 超出范圍,仍可以使用這些指令。通常您并不知道鏈接器會(huì)將 label 放在何處。必要時(shí)鏈接器會(huì)添加代碼,以允許進(jìn)行更長(zhǎng)的跳轉(zhuǎn)。 所添加的代碼稱(chēng)為中間代碼。
Thumb-2 中的 B
您可以使用 .W 寬度說(shuō)明符強(qiáng)制 B 在 Thumb-2 代碼中生成 32 位指令。
B.W 始終生成 32 位指令,即使使用 16 位指令就可訪問(wèn)目標(biāo)也如此。
對(duì)于向前引用,不帶 .W 的 B 始終在 Thumb 代碼中生成 16 位指令,即使這會(huì)導(dǎo)致無(wú)法訪問(wèn)可以使用 32 位 Thumb 指令訪問(wèn)的目標(biāo)。
Thumb-2EE 中的 BX、BLX 和 BXJ
這些指令可在 Thumb-2EE 代碼中用作跳轉(zhuǎn),但不能用于更改狀態(tài)。 不能在 Thumb-2EE 中使用這些指令的 op{cond} label 格式。在該寄存器格式中,Rm 的位 [0] 必須是 1,執(zhí)行以 ThumbEE 狀態(tài)在目標(biāo)地址繼續(xù)進(jìn)行。
條件標(biāo)記
這些指令不更改標(biāo)記。
體系結(jié)構(gòu)
有關(guān)這些指令在每種體系結(jié)構(gòu)中的可用性的詳細(xì)信息。
示例
   B       loopA
    BLE     ng+8
    BL      subC
    BLLT    rtX
    BEQ     {pc}+4  ; #0x8004

ARM/thumb之間 函數(shù)調(diào)用:

在同一狀態(tài)時(shí)直接:BL function即可

返回也直接用MOV PC,LR

不在同一狀態(tài)要注意以下幾點(diǎn):

1.         要用BX,而不用BL

2.         BX之前要保存好LR

3.         要用BX LR來(lái)返回



;Check if tasm.exe(armasm -16 ...@ADS 1.0) is used.
;這一段是為了統(tǒng)一處理器工作狀態(tài)和軟件編譯方式(16位編譯環(huán)境使用tasm.exe編譯)
;arm有兩種工作狀態(tài):
;(1)32位,該狀態(tài)執(zhí)行字對(duì)準(zhǔn)的arm指令;
;(2)16位,該狀態(tài)執(zhí)行半字對(duì)準(zhǔn)的Thumb指令
;不同的工作狀態(tài),編譯器編譯方式也不同
GBLL THUMBCODE
[ {CONFIG} = 16 ;if config
THUMBCODE SETL {TRUE}
CODE32 ;轉(zhuǎn)入32位編譯模式
| ;else
THUMBCODE SETL {FALSE} ;設(shè)置為FALSE
MACRO
MOV_PC_LR
[ THUMBCODE
bx lr
|
mov pc,lr
MEND
MACRO
MOVEQ_PC_LR
[ THUMBCODE
bxeq lr
|
moveq pc,lr
MEND
GBLA 指令聲明一個(gè)全局算術(shù)變量,并將其值初始化為 0。
GBLL 指令聲明一個(gè)全局邏輯變量,并將其值初始化為 {FALSE}。
GBLS 指令聲明一個(gè)全局字符串變量,并將其值初始化為空字符串 ""。
語(yǔ)法
<</span>gblx> variable
其中:

是 GBLA、GBLL 或 GBLS。
variable
是變量的名稱(chēng)。variable 在一個(gè)源文件內(nèi)的符號(hào)中必須是唯一的。
SETA 指令用于設(shè)置局部或全局算術(shù)變量的值。
SETL 指令用于設(shè)置局部或全局邏輯變量的值。
SETS 指令用于設(shè)置局部或全局字符串變量的值。
語(yǔ)法
variable <</span>setx> expr
其中:

是 SETA、SETL 或 SETS。
variable
是由 GBLA、GBLL、GBLS、LCLA、LCLL 或 LCLS 指令聲明的變量的名稱(chēng)。
expr
是一個(gè)表達(dá)式,可以為以下幾種類(lèi)型:
對(duì)于 SETA,其值是數(shù)值型
對(duì)于 SETL,其值是邏輯型
對(duì)于 SETS,其值是字符串。







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜免费视频 | 久久激情视频 | 欧美日韩精品一区二区天天拍 | 国产亚洲一区二区三区在线观看 | 亚洲五码久久 | 亚洲不卡视频 | 欧美日韩黄 | 在线观看免费观看在线91 | 区一区二在线观看 | 日韩精品一区二区三区高清免费 | 亚洲精品免费视频 | 欧美日韩综合一区 | 亚洲视频一区在线 | 亚洲成人av | 亚州视频在线 | 欲色av| 亚洲 成人 av | 日韩av视屏 | 国产精品一区二区三区四区 | 神马影院一区二区三区 | 午夜精品一区二区三区在线 | 国产精品一区二区视频 | 2019精品手机国产品在线 | 爱草在线 | 在线免费观看黄色网址 | 少妇淫片aaaaa毛片叫床爽 | 日本天堂视频 | 国产在线精品一区二区 | 99精品国产一区二区青青牛奶 | 中文字幕久久久 | 精品免费在线 | 日本黄色免费片 | 日韩精品一区二区三区中文在线 | 精品一区二区久久久久久久网精 | 永久av| 一级毛片中国 | 国产精品一区二区三 | 日韩成人在线观看 | 成人精品一区二区三区 | 精品视频一区二区三区在线观看 | 国产成人高清在线观看 |