![21天学通Linux嵌入式开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/594/680594/b_680594.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.2 数据处理指令
数据处理是ARM处理器的看家本领,Cortex-M3提供了丰富多彩的数据处理指令,每种指令的用法也是多种多样的。
5.2.1 算术四则运算指令
数据处理指令中常见的是算术四则运算指令,如表5-5所示。
表5-5 常见的算术四则运算指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0068_0002.jpg?sign=1739291168-ukoxHlUGnTlzxdrvUDdrxsjWwH5mGI9M-0-c3f7b56de50bd29daf180b3acaa78fb5)
Cortex-M3 还片载了硬件乘法器,支持乘加/乘减指令,并且能产生64 位的积,如表5-6所示。
表5-6 64位乘法指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0069_0001.jpg?sign=1739291168-atNYzSm7khTTus1HfZP7jdXjwWy1I5Qy-0-7bd5ac3d1f34516800cee9205a49aa56)
5.2.2 逻辑及移位操作指令
Cortex-M3逻辑运算及移位运算也是基本的数据操作,如表5-7所示。
表5-7 常用逻辑操作指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0069_0002.jpg?sign=1739291168-NH0Bwg2AIUoIP0ySjrGUmu3mEFRCmHSX-0-c87aab508754cd131b16a6022ed7412a)
Cortex-M3还支持为数众多的移位运算。移位运算既可以与其他指令组合使用,也可以独立使用,如表5-8所示。
表5-8 移位和循环指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0069_0003.jpg?sign=1739291168-uodLRXcDSVHTKrGL98O8vovhEgjxtaAb-0-328dbd74dc8566cf9f4daa29d195f32a)
Cortex-M3还包括带符号扩展指令,如表5-9所示。
表5-9 常用的带符号扩展指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0070_0002.jpg?sign=1739291168-N2inbLM0bp0bSrmb2Mra3OY8mW41lHL9-0-cf95c2d026e7a880453b4593dd435092)
5.2.3 数据序转及位操作指令
我们知道,32位整数可以被认为是由4个字节拼接成的,也可以被认为是2个半字拼接成的。有时,需要把这些子元素颠来倒去。此时便用到数据序转指令,如表5-10所示。
表5-10 常用的数据序转指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0070_0003.jpg?sign=1739291168-YBfkcVJWkc7uv7jQok05cZ2IkFUKNqyb-0-bbc6e6a50b4d779e769eceea7d8264da)
Cortex-M3也支持位操作指令。位操作在单片机程序中,以及在系统软件中应用得比较多,而且在这里面有大量的使用技巧。常用的位操作指令如表5-11所示。
表5-11 常用的位操作指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0070_0004.jpg?sign=1739291168-OD34G8vEkwFwOSLqLWGS1JCjfIsGZ2PG-0-978be5dc78217a0abceeae9a4199f865)