![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=1739055739-55z3JIddNDzxEkFQJs6aBKt5JZb2cDoC-0-2e9e9a83a11cd5c55f55664bdcd3ace4)
Cortex-M3 还片载了硬件乘法器,支持乘加/乘减指令,并且能产生64 位的积,如表5-6所示。
表5-6 64位乘法指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0069_0001.jpg?sign=1739055739-GNw5WhxJG9QyptOvp1p6l6FDyBsKD5V5-0-aff8a84fd77c893c2b1bdf17145db3d6)
5.2.2 逻辑及移位操作指令
Cortex-M3逻辑运算及移位运算也是基本的数据操作,如表5-7所示。
表5-7 常用逻辑操作指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0069_0002.jpg?sign=1739055739-QrBQ7wUMd907AWSXh8isflquRHtVVPwk-0-5a121f58a91b84d075a4f1acc6ea6675)
Cortex-M3还支持为数众多的移位运算。移位运算既可以与其他指令组合使用,也可以独立使用,如表5-8所示。
表5-8 移位和循环指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0069_0003.jpg?sign=1739055739-nERZjQtHdZKCz9EeMRVWBIUIMQOhlbj7-0-9e1db4a46d00460035c820109a598e67)
Cortex-M3还包括带符号扩展指令,如表5-9所示。
表5-9 常用的带符号扩展指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0070_0002.jpg?sign=1739055739-idsMqy3LIPIL7qF6pFNQUbvy1733zFdt-0-56f879122e791d1ae18932f33485f651)
5.2.3 数据序转及位操作指令
我们知道,32位整数可以被认为是由4个字节拼接成的,也可以被认为是2个半字拼接成的。有时,需要把这些子元素颠来倒去。此时便用到数据序转指令,如表5-10所示。
表5-10 常用的数据序转指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0070_0003.jpg?sign=1739055739-7I6CmV9CFRWbe9vg957yOuRpAP6M3IoG-0-ec16853a827c474b6f399d226e83e3c2)
Cortex-M3也支持位操作指令。位操作在单片机程序中,以及在系统软件中应用得比较多,而且在这里面有大量的使用技巧。常用的位操作指令如表5-11所示。
表5-11 常用的位操作指令
![](https://epubservercos.yuewen.com/7B981F/3590446203795101/epubprivate/OEBPS/Images/figure_0070_0004.jpg?sign=1739055739-JxZgYMFmq5sjmUwLtsA43XVb7h7F52Lg-0-79eb6f185468cf39781d1272eaea6356)