最近基于cortex-M0/M0+的mcu增多了,學(xué)習(xí)了大佬凌煙慕魚的作品,這里記下來,以便以后學(xué)習(xí)。
Cortex M0+保留了Cortex-M0的全部56個(gè)指令。
根據(jù)功能可以將Cortex-M0+處理器的指令化為以下幾組
在處理器內(nèi)移動數(shù)據(jù)
MOV,MRS(move special register to register),MSR
存儲器訪問
LDR(LDR,LDRH,LDRB),STR(STR,STRH,STRB),LDM,LDMIA(基地址寄存器會更新),STMIA
??臻g訪問
PUSH,POP(都可以用來操作多個(gè)寄存器,SP的值=棧頂?shù)臄?shù)據(jù)的地址值+4)
算數(shù)運(yùn)算
ADD,ADDC(帶進(jìn)位的加法),SUB,SBC(帶借位的減法),MUL,CMP,CMN(負(fù)數(shù)比較)
邏輯運(yùn)算
AND,ORR(邏輯或),EOR(邏輯亦或),BIC(邏輯位清除),MVN(邏輯位取反),TST(位與)
移位和循環(huán)操作
ASR(最高位不變,最后一位移出位到APSR中的進(jìn)位標(biāo)志),LSL,LSR,ROR(循環(huán)右移)
展開和順序反轉(zhuǎn)操作
REV(字節(jié)反轉(zhuǎn)),REV16(半字內(nèi)的反轉(zhuǎn)),REVSH(低半字內(nèi)的字節(jié)順序反轉(zhuǎn),并進(jìn)行有符號展開)這些反轉(zhuǎn)指令通常用于大小端系統(tǒng)之間數(shù)據(jù)轉(zhuǎn)換。
SXTB(對字?jǐn)?shù)據(jù)中的最低字節(jié)進(jìn)行有符號展開),SXTH,UXTB(對字?jǐn)?shù)據(jù)中的最低字節(jié)進(jìn)行無符號展開),UXTH
符號根據(jù)第7位或者第15位來決定
程序流控制
B(無條件跳轉(zhuǎn)),B< cond ><標(biāo)號> (條件跳轉(zhuǎn),有14個(gè)可選cond后綴),BL(跳轉(zhuǎn)并將返回地址存儲到LR),BX(跳轉(zhuǎn)并根據(jù)寄存器的值第0位修改處理器狀態(tài))
一般使BL調(diào)用子函數(shù),BX LR返回
存儲器屏障指令
DMB,DSB,ISB
這些指令用于復(fù)雜的存儲器系統(tǒng)。Cortex-M0只有一個(gè)存儲器接口連接到存儲器系統(tǒng),并且系統(tǒng)總線接口上沒有緩存,所以這些指令一般用不到。但是還是支持3個(gè)存儲器屏障指令
異常相關(guān)指令
SVC 請求管理調(diào)用,一般用于系統(tǒng)服務(wù)的入口或者API
CPS 使能或者禁止中斷
其他功能
NOP,BKPT(斷點(diǎn))
偽指令
發(fā)布評論請先 登錄
相關(guān)推薦
評論