交換指令是load/store指令的一種特例,它把一個(gè)寄存器單元的內(nèi)容與寄存器內(nèi)容交換。交換指令是一個(gè)原子操作(atomic operation),也就是說,在連續(xù)的總線操作中讀/寫一個(gè)存儲單元,在操作期間阻止其他任何指令對該存儲單元的讀/寫。
ARM指令集提供了兩條指令,可直接控制程序狀態(tài)寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值傳送到一個(gè)寄存器;MSR與之相反,把一個(gè)寄存器的內(nèi)容傳送到CPSR或SPSR。這兩條指令結(jié)合,可用于對CPSR和SPSR進(jìn)行讀/寫操作。
AND指令將表示的數(shù)值與寄存器的值按位(bitwise)做邏輯與操作,并將結(jié)果保存到目標(biāo)寄存器中,同時(shí)根據(jù)操作的結(jié)果更新CPSR寄存器。
邏輯異或EOR(Exclusive OR)指令將寄存器中的值和的值執(zhí)行按位“異或”操作,并將執(zhí)行結(jié)果存儲到目的寄存器中,同時(shí)根據(jù)指令的執(zhí)行結(jié)果更新CPSR中相應(yīng)的條件標(biāo)志位。
SUB(Subtract)減操作指令,從寄存器中減去表示的數(shù)值,并將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
RSB(Reverse Subtract)減操作指令,從寄存器中減去表示的數(shù)值,并將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
ADD加操作指令,將寄存器的值加上表示的數(shù)值,并將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
ADC加操作指令,將寄存器的值加上表示的數(shù)值,再加上CPSR中的C條件標(biāo)志位的值,將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
SBC(Subtract with Carry)帶進(jìn)位的減操作指令,用于執(zhí)行操作數(shù)大于32位時(shí)的減法操作。該指令從寄存器中減去表示的數(shù)值,再減去寄存器CPSR中C條件標(biāo)志位的反碼(NOT(Carry flag))。并將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
RSC(Reverse Subtract with Carry)帶進(jìn)位的翻轉(zhuǎn)減操作指令,從寄存器中減去表示的數(shù)值,再減去寄存器CPSR中C條件標(biāo)志位的反碼(NOT(Carry Flag)),并將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
RSC(Reverse Subtract with Carry)帶進(jìn)位的翻轉(zhuǎn)減操作指令,從寄存器中減去表示的數(shù)值,再減去寄存器CPSR中C條件標(biāo)志位的反碼(NOT(Carry Flag)),并將結(jié)果保存到目標(biāo)寄存器中,并根據(jù)指令的執(zhí)行結(jié)果設(shè)置CPSR中相應(yīng)的標(biāo)志位。
TEQ(Test Equivalence)測試指令用于將一個(gè)寄存器的值和一個(gè)算術(shù)值做比較。條件標(biāo)志位根據(jù)兩個(gè)操作數(shù)做“邏輯或”后的結(jié)果設(shè)置。以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。
CMP(Compare)比較指令使用寄存器Rn的值減去operand2的值,根據(jù)操作的結(jié)果更新CPSR中相應(yīng)的條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。
CMN(Compare Negative)比較指令使用寄存器Rn的值減去operand2的負(fù)數(shù)值(加上operand2),根據(jù)操作的結(jié)果更新CPSR中相應(yīng)的條件標(biāo)志位,以便后面的指令根據(jù)相應(yīng)的條件標(biāo)志來判斷是否執(zhí)行。
ORR(Logical OR)為邏輯或操作指令,將第二個(gè)源操作數(shù)的值與寄存器Rn的值按位做邏輯或操作,結(jié)果保存到Rd中。
學(xué)吧
夜是打火機(jī)
18713271819cxy
賈仁明
bu一樣的煙火
mikeniu
chris527
LBSEric
21CI2133
洛奇ing
SIASGUOJIe
逮到一只程序猿
zx66
zhaoyuan
建志的智
sdwfywl
cgyyds
云城a
shaolw
ti-funs
劉劍君
帶偷子
shaoniany
陳震偉
2334599288
helloyyll
怪打野題
liqinglong1023
cxk1998