ARM微處理器的指令集是加載/存儲(chǔ)型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對(duì)系統(tǒng)存儲(chǔ)器的訪問(wèn)則需要通過(guò)專門的加載/存儲(chǔ)指令來(lái)完成。
ARM微處理器的指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(PSR)處理指令、加載/存儲(chǔ)指令、協(xié)處理器指令和異常產(chǎn)生指令六大類,具體的指令及功能如表3-1所示(表中指令為基本ARM指令,不包括派生的ARM指令)。
當(dāng)處理器工作在ARM狀態(tài)時(shí),幾乎所有的指令均根據(jù) CPSR 中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿足時(shí),指令被執(zhí)行,否則指令被忽略。
每一條 ARM 指令包含 4 位的條件碼,位于指令的最高 4 位 [31:28] 。條件碼共有 16 種,每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可以添加在指令助記符的后面和指令同時(shí)使用。例如,跳轉(zhuǎn)指令 B 可以加上后綴 EQ 變?yōu)?BEQ 表示 “ 相等則跳轉(zhuǎn) ” ,即當(dāng) CPSR 中的 Z 標(biāo)志置位時(shí)發(fā)生跳轉(zhuǎn)。
在 16 種條件標(biāo)志碼中,只有 15 種可以使用,如表 3-2 所示,第 16 種( 1111 )為系統(tǒng)保留,暫時(shí)不能使用。