ARM Cortex-M3 學(xué)習(xí)筆記(4-5)
Barrier 指令
DMB, DSB, ISB
本文引用地址:http://m.butianyuan.cn/article/201611/318833.htm這三個指令的區(qū)別如下表所示。
指令名 | 功能描述 |
DMB | 數(shù)據(jù)存儲器隔離。DMB指令保證: 僅當(dāng)所有在它前面的存儲器訪問操作都執(zhí)行完畢后,才提交(commit)在它后面的存儲器訪問操作。 |
DSB | 數(shù)據(jù)同步隔離。比DMB嚴(yán)格: 僅當(dāng)所有在它前面的存儲器訪問操作都執(zhí)行完畢后,才執(zhí)行在它后面的指令(亦即任何指令都要等待存儲器訪問操作——譯者注) |
ISB | 指令同步隔離。最嚴(yán)格:它會清洗流水線,以保證所有它前面的指令都執(zhí)行完畢之后,才執(zhí)行它后面的指令。 |
其他一些有用的指令
Cortex-M3中支持的指令很多。這里不可能全都介紹到。下面就再提幾個我認(rèn)為比較有特色的指令來介紹。
REV, REVH,REV16以及REVSH
REV反轉(zhuǎn)32位整數(shù)中的字節(jié)序,REVH則以半字為單位反轉(zhuǎn),且只反轉(zhuǎn)低半字。
REVSH在REVH的基礎(chǔ)上,還把轉(zhuǎn)換后的半字做帶符號擴(kuò)展。
這幾條指令主要用于大端系統(tǒng)與小端系統(tǒng)相互通訊時的字節(jié)序轉(zhuǎn)換。
RBIT指令
RBIT是按位反轉(zhuǎn)的,相當(dāng)于把32位整數(shù)的二進(jìn)制表示法水平旋轉(zhuǎn)180度。其格式為:
RBIT.W Rd, Rn
看到按位反轉(zhuǎn),我就想到了FFT計算的蝶形運(yùn)算。那里是最需要這種指令的。
TBB,TBH 指令
可以用于C語言中的switch case 結(jié)構(gòu)的匯編。具體的用法這里不詳細(xì)介紹了,需要用的還是看書吧。
評論