<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM Cortex-M3 學(xué)習筆記(4-3)

ARM Cortex-M3 學(xué)習筆記(4-3)

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
最近在學(xué)ARM Cortex-M3,找了本號稱(chēng)很經(jīng)典的書(shū)“An Definitive Guide to The ARM Cortex-M3”在看。這個(gè)系列學(xué)習筆記其實(shí)就是在學(xué)習這本書(shū)的過(guò)程中做的讀書(shū)筆記。

數據處理指令

Cortex-M3支持的數據處理指令非常多,這里就撿重要的、常用的來(lái)介紹。

本文引用地址:http://dyxdggzs.com/article/201611/318831.htm

四則運算指令

基本的加、減法運算有四條指令,分別是ADD、SUB、ADC、SBC

ADD Rd,Rn, Rm ; Rd = Rn+Rm

ADD Rd,Rm ; Rd += Rm

ADD Rd,#imm ; Rd += imm

ADC Rd,Rn, Rm ; Rd = Rn+Rm+C

ADC Rd,Rm ; Rd += Rm+C

ADC Rd,#imm ; Rd += imm+C

SUB Rd,Rn ; Rd -= Rn

SUB Rd,Rn, #imm3 ; Rd = Rn-imm3

SUB Rd,#imm8 ; Rd -= imm8

SUB Rd,Rn, Rm ; Rd = Rm-Rm

SBC Rd,Rm ; Rd -= Rm+C

SBC.W Rd,Rn, #imm12 ; Rd = Rn-imm12-C

SBC.W Rd,Rn, Rm ; Rd = Rn-Rm-C

除此之外,還有反向減法指令RSB:

RSB.W Rd,Rn, #imm12 ; Rd = imm12-Rn

RSB.W Rd,Rn, Rm ; Rd = Rm-Rn

乘、除法指令包括 MUL、UDIV/SDIV 等。

MUL Rd,Rm ; Rd *= Rm

MUL.W Rd,Rn, Rm ; Rd = Rn*Rm

UDIV Rd,Rn, Rm ; Rd = Rn/Rm (無(wú)符號除法)

SDIV Rd,Rn, Rm ; Rd = Rn/Rm (帶符號除法)

一條指令可以實(shí)現乘加運算(通常只在DSP中才有):

MLA Rd, Rm, Rn, Ra ; Rd = Ra+Rm*Rn

MLS Rd, Rm, Rn, Ra ; Rd = Ra-Rm*Rn

還能進(jìn)行32位乘32位的乘法運算(結果為64位):

SMULL RL, RH, Rm, Rn ;[RH:RL]= Rm*Rn,帶符號的64位乘法

SMLAL RL, RH, Rm, Rn ;[RH:RL]+= Rm*Rn,帶符號的64位乘法

UMULL RL, RH, Rm, Rn ;[RH:RL]= Rm*Rn,無(wú)符號的64位乘法

SMLAL RL, RH, Rm, Rn ;[RH:RL]+= Rm*Rn,無(wú)符號的64位乘法

由于有了這些指令,Cortex-M3具有了相當的計算能力,可以采用Cortex-M3代替曾經(jīng)只能用DSP才能完成的計算。

邏輯運算相關(guān)的指令也很多,常用的包括AND,ORR, BIC(位段清零), ORN(按位或反碼), EOR(異或),LSL(邏輯左移), LSR(邏輯右移), ASR(算數右移), ROR(圓周右移), RRX(帶進(jìn)位右移一位)

;按位與

AND Rd, Rn ; Rd &= Rn

AND.W Rd, Rn, #imm12 ; Rd = Rn & imm12

AND.W Rd, Rm, Rn ; Rd = Rm & Rn

;按位或

ORR Rd, Rn ; Rd |= Rn

ORR.W Rd, Rn, #imm12 ; Rd = Rn | imm12

ORR.W Rd, Rm, Rn ; Rd = Rm | Rn

;按位清零

BIC Rd, Rn ; Rd &= ~Rn

BIC.W Rd, Rn, #imm12 ; Rd = Rn & ~imm12

BIC.W Rd, Rm, Rn ; Rd = Rm & ~Rn

;按位或反

ORN.W Rd, Rn, #imm12 ; Rd = Rn | ~imm12

ORN.W Rd, Rm, Rn ; Rd = Rm | ~Rn

;按位異或

EOR Rd, Rn ; Rd ^= Rn

EOR.W Rd, Rn, #imm12 ; Rd = Rn ^ imm12

EOR.W Rd, Rm, Rn ; Rd = Rm ^ Rn

;邏輯左移

LSL Rd, Rn, #imm5 ; Rd = Rn<

LSL Rd, Rn ; Rd <<= Rn

LSL.W Rd, Rm, Rn ; Rd = Rm<

;邏輯右移

LSR Rd, Rn, #imm5 ; Rd = Rn>>imm5

LSR Rd, Rn ; Rd >>= Rn

LSR.W Rd, Rm, Rn ; Rd = Rm>>Rn

;算術(shù)右移

ASR Rd, Rn, #imm5 ; Rd = Rn>> imm5

ASR Rd, Rn ; Rd =>> Rn

ASR.W Rd, Rm, Rn ; Rd = Rm>>Rn

;循環(huán)右移

ROR Rd, Rn ;

ROR.W Rd, Rm, Rn ;

符號擴展指令

SXTB Rd, Rm ; Rd = Rm的帶符號擴展,把帶符號字節整數擴展到32位

SXTH Rd, Rm ; Rd = Rm的帶符號擴展,把帶符號半字整數擴展到32位

字節序反轉指令

REV.W Rd, Rn; 在字中反轉字節序

REV16.W Rd, Rn; 在高低半字中反轉字節序

REVSH.W; 在低半字中反轉字節序,并做帶符號擴展

其他計算類(lèi)指令

帶符號擴展指令:

SXTB Rd, Rm ; Rd = Rm的帶符號擴展

SXTH Rd, Rm ; Rd = Rm的帶符號擴展

數據序翻轉指令:

REV.W Rd, Rn ;在字中反轉字節序

REV16.W Rd, Rn ;在高低半字中反轉字節序

REVSH.W ; 在低半字中反轉字節序,并做帶符號擴展

飽和運算

飽和運算指令在其他單片機中很少見(jiàn)。這類(lèi)指令的初衷非常好,但是C語(yǔ)言并不直接支持這類(lèi)運算,要在C程序中使用要么采用內聯(lián)匯編要么就要將其封裝成個(gè)函數,都不是很方便。這可能會(huì )限制這類(lèi)指令的使用。關(guān)于飽和運算指令的作用,可以用下圖來(lái)形象的展示:

圖 1 飽和運算指令的作用

下面是相關(guān)指令的用法:

SSAT.W Rd, #imm5, Rn, {,shift}; 以帶符號數的邊界進(jìn)行飽和運算(交流)

USAT.W Rd, #imm5, Rn, {,shift}; 以無(wú)符號數的邊界進(jìn)行飽和運算(帶紋波的直流)



關(guān)鍵詞: ARMCortex-M

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>