官术网_书友最值得收藏!

  • 從零開始學(xué)ARM
  • 彭丹 周海濤編著
  • 550字
  • 2025-01-16 17:59:02

3.1 ARM指令格式

ARM指令助記符表示如下。

<opcode> {<cond>} {S} <Rd>, <Rn>, <shift_op2>

每個(gè)域的含義如下。

(1)<opcode>:操作碼域。作為指令編碼的助記符。

(2){<cond>}:條件碼域,指令允許執(zhí)行的條件編碼,大括號(hào)表示此項(xiàng)可缺省。

ARM指令的一個(gè)重要特點(diǎn)是其可以條件執(zhí)行,每條ARM指令的條件碼域包含4位條件碼,共16種。絕大多數(shù)指令根據(jù)CPSR中條件碼的狀態(tài)和條件碼域的設(shè)置條件執(zhí)行。當(dāng)執(zhí)行條件滿足時(shí),指令被執(zhí)行,否則被忽略。ARM指令條件碼如表3-1所示。

表3-1 ARM指令條件碼

續(xù)表

每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可以作為助記符后綴添加在指令的后面和指令同時(shí)使用。

例如,跳轉(zhuǎn)指令“b”可以加上后綴“eq”變?yōu)椤癰eq”,表示“相等則跳轉(zhuǎn)”,即當(dāng)CPSR中的Z標(biāo)志位置位時(shí)發(fā)生跳轉(zhuǎn)。

(3){S}:條件碼設(shè)置域。這是一個(gè)可選項(xiàng),當(dāng)設(shè)置該域時(shí),指令執(zhí)行的結(jié)果將會(huì)影響程序狀態(tài)寄存器CPSR中相應(yīng)的狀態(tài)標(biāo)志。示例如下。

add r0,r1,r2;將R1與R2的和存放到R0中,不影響程序狀態(tài)寄存器。
adds r0,r1,r2;執(zhí)行加法,影響程序狀態(tài)寄存器。

指令中比較特殊的是指令CMP,它不需要加“s”后綴就默認(rèn)根據(jù)計(jì)算結(jié)果更改CPRS。

(4)<Rd>:目的操作數(shù)。ARM指令中的目的操作數(shù)總是一個(gè)寄存器。即使<Rd>與第一操作數(shù)寄存器<Rn>相同,此處也必須要指明,不能缺省。

(5)<Rn>:第一操作數(shù)。ARM指令中的第一操作數(shù)也必須是個(gè)寄存器。

(6)<shift_op2>:第二操作數(shù)。第二操作數(shù)可以是寄存器、內(nèi)存存儲(chǔ)單元或立即數(shù)。

主站蜘蛛池模板: 大埔县| 建阳市| 浦江县| 大足县| 射阳县| 阿合奇县| 五大连池市| 延庆县| 三穗县| 奉化市| 双牌县| 五指山市| 阿克苏市| 桑日县| 绵阳市| 南雄市| 邵武市| 涟源市| 武山县| 民权县| 旅游| 当阳市| 塔河县| 道真| 明溪县| 马关县| 衡水市| 栖霞市| 米易县| 安平县| 临漳县| 司法| 长武县| 阳新县| 大丰市| 民乐县| 梁山县| 大竹县| 柞水县| 济南市| 永登县|