久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ARM 匯編指令條件執行詳解

ARM 匯編指令條件執行詳解

作者: 時間:2016-11-09 來源:網絡 收藏
2.5 條件執行

ARM模式下,任何一條數據處理指令可以選擇是否根據操作的結果來更新CPSR寄存器中的ALU狀態標志位。在數據處理指令中使用S后綴來實現該功能。

本文引用地址:http://cqxgywz.com/article/201611/317772.htm

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

在Thumb模式下,所有數據處理指令都更新CPSR中的標志位。有一個例外就是:當一個或更多個高寄存器被用在MOV和ADD指令時,此時MOV和ADD不能更新狀態標志.

幾乎所有的ARM指令都可以根據CPSR中的ALU狀態標志位來條件執行。參見表2-1條件執行后綴表。

在ARM模式下,你可以:

· 根據數據操作的結果更新CPSR中的ALU狀態標志;

· 執行其他幾種操作,但不更新狀態標志;

· 根據當前狀態標志,決定是否執行接下來的指令。

在Thumb模式,大多數操作總是更新狀態標志位,并且只能使用條件轉移指令(B)來實現條件執行。該指令(B)的后綴和在ARM模式下是一樣的。其他指令不能使用條件執行。

2.5.1 ALU狀態標志

CPSR寄存器包含下面的ALU狀態標志:

2.5.2 執行條件

N,Z,C,V相關的條件碼后綴如下表所列:

舉例說明:

示例1:

ADD r0, r1, r2 ; r0 = r1 + r2, 不更新標志位

ADDS r0, r1, r2 ; r0 = r1 + r2, 后綴S表示更新標志位

ADDCSS r0, r1, r2 ; If C 標志為1,則執行r0 = r1 + r2, 且更新標志,

CMP r0, r1 ; CMP指令肯定會更新標志.

示例2:(請自行分析)

gcd CMP r0, r1

BEQ end

BLT less

SUB r0, r0, r1

B gcd

less

SUB r1, r1, r0

B gcd

end



評論


技術專區

關閉