新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM 匯編指令條件執(zhí)行詳解

ARM 匯編指令條件執(zhí)行詳解

作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
2.5 條件執(zhí)行

ARM模式下,任何一條數(shù)據(jù)處理指令可以選擇是否根據(jù)操作的結(jié)果來(lái)更新CPSR寄存器中的ALU狀態(tài)標(biāo)志位。在數(shù)據(jù)處理指令中使用S后綴來(lái)實(shí)現(xiàn)該功能。

本文引用地址:http://m.butianyuan.cn/article/201611/317772.htm

不要在CMP,CMN,TST或者TEQ指令中使用S后綴。這些比較指令總是會(huì)更新標(biāo)志位。

在Thumb模式下,所有數(shù)據(jù)處理指令都更新CPSR中的標(biāo)志位。有一個(gè)例外就是:當(dāng)一個(gè)或更多個(gè)高寄存器被用在MOV和ADD指令時(shí),此時(shí)MOV和ADD不能更新?tīng)顟B(tài)標(biāo)志.

幾乎所有的ARM指令都可以根據(jù)CPSR中的ALU狀態(tài)標(biāo)志位來(lái)?xiàng)l件執(zhí)行。參見(jiàn)表2-1條件執(zhí)行后綴表。

在ARM模式下,你可以:

· 根據(jù)數(shù)據(jù)操作的結(jié)果更新CPSR中的ALU狀態(tài)標(biāo)志;

· 執(zhí)行其他幾種操作,但不更新?tīng)顟B(tài)標(biāo)志;

· 根據(jù)當(dāng)前狀態(tài)標(biāo)志,決定是否執(zhí)行接下來(lái)的指令。

在Thumb模式,大多數(shù)操作總是更新?tīng)顟B(tài)標(biāo)志位,并且只能使用條件轉(zhuǎn)移指令(B)來(lái)實(shí)現(xiàn)條件執(zhí)行。該指令(B)的后綴和在ARM模式下是一樣的。其他指令不能使用條件執(zhí)行。

2.5.1 ALU狀態(tài)標(biāo)志

CPSR寄存器包含下面的ALU狀態(tài)標(biāo)志:

2.5.2 執(zhí)行條件

N,Z,C,V相關(guān)的條件碼后綴如下表所列:

舉例說(shuō)明:

示例1:

ADD r0, r1, r2 ; r0 = r1 + r2, 不更新標(biāo)志位

ADDS r0, r1, r2 ; r0 = r1 + r2, 后綴S表示更新標(biāo)志位

ADDCSS r0, r1, r2 ; If C 標(biāo)志為1,則執(zhí)行r0 = r1 + r2, 且更新標(biāo)志,

CMP r0, r1 ; CMP指令肯定會(huì)更新標(biāo)志.

示例2:(請(qǐng)自行分析)

gcd CMP r0, r1

BEQ end

BLT less

SUB r0, r0, r1

B gcd

less

SUB r1, r1, r0

B gcd

end



關(guān)鍵詞: ARM匯編指令條件執(zhí)

評(píng)論


技術(shù)專區(qū)

關(guān)閉