最近在学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 结构的汇编。具体的用法这儿不具体介绍了,需求用的仍是看书吧。