ARM架构芯片中,所有的运算都是再CPU内部进行的,有哪些数据运算的指令呢?
所有的数据都是在**CPU**内部处理的
可以参考《DEN0013D_cortex_a_series_PG.pdf》P70、《ARM Cortex-M3与Cortex-M4权威指南.pdf》第5章获取数据处理指令的相关资料;《DEN0013D_cortex_a_series_PG》是cortex-A7的手册
- 数据处理指令非常多,UAL格式为:
- 并不需要掌握全部的指令,掌握若干条就足够了
- 掌握MOV/ADD/SUB/AND/BIC/ORR/CMP等指令即可
1.加法指令ADD:
ADD R1, R2, R3 ; R1 = R2 + R3
ADD R1, R2, #0x12 ; R1 = R2 + 0x12
2.减法指令SUB:
SUB R1, R2, R3 ; R1 = R2 - R3
SUB R1, R2, #0x12 ; R1 = R2 - 0x12
3.位操作:
; VisUAL里不支持(1<<4)这样的写法,写成:0x10
**AND **R1, R2, #(1<<4) ; 位与,R1 = R2 & (1<<4)
AND R1, R2, R3 ; 位与,R1 = R2 & R3
**BIC **R1, R2, #(1<<4) ; 清除某位,R1 = R2 & ~(1<<4)
BIC R1, R2, R3 ; 清除某位,R1 = R2 & ~R3
**ORR **R1, R2, R3 ; 或操作, R1 = R2 | R3
4.比较:
**CMP** R0, R1 ; 比较R0-R1的结果
CMP R0, #0x12 ; 比较R0-0x12的结果
**TST **R0, R1 ; 测试R0 & R1的结果
TST R0, #(1<<4) ; 测试R0 & (1<<4)的结果
比较的结果会影响到程序状态寄存器
- 程序状态寄存器中会被运算影响的bit:
- N/Z/C/V