ARM Cortex-M3 學習筆記(4-5)
阿新 • • 發佈:2019-02-15
最近在學ARMCortex-M3, 找了本號稱很經典的書“An Definitive Guide to The ARM Cortex-M3”在看。這個系列學習筆記其實就是在學習這本書的過程中做的讀書筆記。
Barrier 指令
DMB, DSB, ISB
這三個指令的區別如下表所示。
指令名 |
功能描述 |
DMB |
資料儲存器隔離。DMB指令保證: 僅當所有在它前面的儲存器訪問操作都執行完畢後,才提交(commit)在它後面的儲存器訪問操作。 |
DSB |
資料同步隔離。比DMB嚴格: 僅當所有在它前面的儲存器訪問操作都執行完畢後,才執行在它後面的指令(亦即任何指令都要等待儲存器訪問操作——譯者注) |
ISB |
指令同步隔離。最嚴格:它會清洗流水線,以保證所有它前面的指令都執行完畢之後,才執行它後面的指令。 |
其他一些有用的指令
Cortex-M3中支援的指令很多。這裡不可能全都介紹到。下面就再提幾個我認為比較有特色的指令來介紹。
REV, REVH,REV16以及REVSH
REV反轉32位整數中的位元組序,REVH則以半字為單位反轉,且只反轉低半字。
REVSH在REVH的基礎上,還把轉換後的半字做帶符號擴充套件。
這幾條指令主要用於大端系統與小端系統相互通訊時的位元組序轉換。
RBIT指令
RBIT是按位反轉的,相當於把32位整數的二進位制表示法水平旋轉180度。其格式為:
RBIT.W Rd, Rn
看到按位反轉,我就想到了FFT計算的蝶形運算。那裡是最需要這種指令的。
TBB,TBH 指令
可以用於C語言中的switch case 結構的彙編。具體的用法這裡不詳細介紹了,需要用的還是看書吧。