arm指令的基本格式
arm指令的基本格式為:
{} ,
其中,< >內的項是必需的,內的項是可選的。
(1)opcode項
opcode是指令助記符,即操作碼,說明指令需要執行的操作,在指令中是必需的。
(2)cond項(command)
cond項表明了指令的執行的條件,每一條arm指令都可以在規定的條件下執行,每條arm指令包含4位的條件碼,位於指令的最高4位[31:28]。條件碼共有16種,每種條件碼用2個字元表示,這兩個字元可以新增至指令助記符的後面,與指令同時使用。當指令的執行條件滿足時,指令才被執行,否則指令被忽略。如果在指令後不寫條件碼,則使用預設條件al(無條件執行)。
指令的條件碼
條 件 碼
助記符字尾
標 志
含 義
0000
eqz置位
相等equal
0001
nez清零
不相等not equal
0010
csc置位
無符號數大於或等於carry set
0011
ccc清零
無符號數小於
0100
min置位
負數minus
0101
pln清零
正數或零plus
0110
vsv置位
溢位0111
vcv清零
沒有溢位
1000
hic置位z清零
無符號數大於high
1001
lsz置位c清零
無符號數小於或等於less
1010
gen等於v
帶符號數大於或等於
1011
ltn不等於v
帶符號數小於least
1100
gtz清零且(n等於v)
帶符號數大於great
1101
lez清零或(n不等於v)
帶符號數小於或等於
1110
al忽略
無條件執行all
1111
nv never
條件碼應用舉例:
例:比較兩個值大小,並進行相應加1處理,c語言**為:
if ( a > b ) a++;
else b++;
對應的arm指令如下(其中r0中儲存a 的值,r1中儲存b的值):
cmp r0, r1 ; r0與r1比較,做r0-r1的操作
addhir0, r0, #1 ;若r0 > r1, 則r0 = r0 + 1
addlsr1, r1, #1 ; 若r0 <= r1, 則r1 = r1 + 1
cmp比較指令,用於把乙個暫存器的內容和另乙個暫存器的內容或乙個立即數進行比較,同時更新cpsr中條件標誌位的值。指令將第一運算元減去第二運算元,但不儲存結果,只更改條件標誌位。
cmp r1, r0 ;做r1-r0的操作。
cmp r1,#10 ;做r1-10的操作。
(3) s項(sign)
s項是條件碼設定項,它決定本次指令執行的結果是否影響至cpsr暫存器的相應狀態位的值。該項是可選的,使用時影響cpsr,否則不影響cpsr。
(4)rd項(destination)
rd是指令中的目標暫存器,它是必需的。根據指令的不同,有些指令中要求rd必須有r0~r7之間,有些要求rd必須在r0~r14之間,有些則沒有特殊要求。
(5)rn項
rn是第乙個運算元的暫存器,和rd一樣,不同的指令對其的使用有不同的要求。
(6)opcode2項
opcode2項是第二個運算元,在arm指令中,該運算元有三種形式:立即數形式、暫存器rm形式和暫存器加移位形式(rm, shift)。
例如:sub r3, r1, #10
sub r3, r1, r2
sub r3, r1, r2, lsl #2
sub r3, r1, r2, lsl r0
movls r2, r0 ; if r0 < r1 則 將小值存入r2中
在這個例子中,movls 能夠正確執行的條件c=0 and z=1 成立,是通過cmp設定了。
若執行指令後
zf=1 這個簡單,則說明兩個數相等,因為zero為1說明結果為0
當無符號時: 若
cf=1 則說明了有進製或借位,cmp是進行的減操作,故可以看出為借位,所以,此時oprd1cf=0 則說明了無借位,但此時要注意zf是否為0,若為0,則說明結果不為0,故此時oprd1>oprd2
當有符號時:
若sf=0,of=0 則說明了此時的值為正數,沒有溢位,可以直觀的看出,oprd1>oprd2
若sf=1,of=0 則說明了此時的值為負數,沒有溢位,則為oprd1若sf=0,of=1 則說明了此時的值為正數,有溢位,可以看出oprd1若sf=1,of=1則說明了此時的值為負數,有溢位,可以看出oprd1>oprd2
最後兩個可以作出這種判斷的原因是,溢位的本質問題:
兩數同為正,相加,值為負,則說明溢位
兩數同為負,相加,值為正,則說明溢位
故有,正正得負則溢位,負負得正則溢位
iptable 詳解 iptable命令詳解1
p protocal protocol 協議 j jump target i in inte ce name 入口 o out inte ce name 出口 f,fragment 分片 指定 p tcp時 source port port port 原埠 也作 sport destionation...
UNIX crontab命令詳解
crontab命令的功能是在一定的時間間隔排程一些命令的執行。在 etc目錄下有乙個crontab檔案,這裡存放有系統執行的一些排程程式。每個使用者可以建立自己的排程crontab。crontab命令有三種形式的命令列結構 crontab u user file crontab u user e l...
mount命令詳解
名稱 mount 使用許可權 系統管理者或 etc fstab中允許的使用者 使用方式 mount hv mount a ffnrsvw t vfstype mount fnrsvw o options device dir mount fnrsvw t vfstype o options devi...