1.16.ARM汇编指令4之比较指令
来源:互联网 发布:淘宝国产高仿手办 编辑:程序博客网 时间:2024/06/06 00:58
ARM比较指令:CMP & CMN & TST & TEQ
* CMP
比较指令,指令使用Rn的值减去operand2的值,根据操作的结果更新CPSR寄存器相应的条件标志位,以便后面的指令根据相应的条件标志位来判断是否执行。
指令格式:
CMP{cond} Rn,operand2
eg:
CMP r1,#10 ; r1与10比较,设置相关标志位
CMP r1,r2 ; r1与r2比较,设置相关标志位
注:CMP指令和SUBS指令的区别在于CMP指令不保存运算结果,在进行俩个数据大小判断时,常用CMP指令及相应的条件码来操作。
* CMN
负数比较指令,指令使用Rn的值加上operand2的值,根据操作的结果更新CPSR寄存器相应的条件标志位,以便后面的指令根据相应的条件标志位来判断是否执行。
指令格式:
CMN{cond} Rn,operand2
eg:
CMN r0,#1 ; r0+1 判断r0是否为1的补码,若是,则cpsr寄存器的Z置位
注:CMN指令与ADDS指令的区别在于CMN指令不保存运算结果,CMN指令可以用于负数比较,比如CMN r0,#1 指令表示r0与-1进行比较,若r0=-1(即1的补码),则Z置位,否则Z复位。
* TST
位测试指令,指令将寄存器Rn的值与operand2按位进行逻辑与操作,根据操作的结果更新CPSR寄存器相应的条件标志位,以便后面的指令根据相应的条件标志位来判断是否执行。
指令格式:
TST{cond} Rn,operand2
eg:
TST r0,#0x01 ; 判断r0的最低位是否为0
TST r1,#0x0f ; 判断r1的低4位是否全为0
注:指令TST和ANDS的指令区别在于TST指令不保存运算结果,TST指令通常与EQ,NE条件码配合使用,当所有测试位都为0时,EQ有效,而只要有一个测试位不为0,则NE有效。
* TEQ
相等测试指令,指令将Rn与operand2的值按位进行异或操作,根据操作的结果更新CPSR寄存器相应的条件标志位,以便后面的指令根据相应的条件标志位来判断指令是否执行。
指令格式:
TEQ{cond} Rn,operand2
eg:
TEQ r0,r1 ; 比较r0与r1是否相等(不影响C位和V位)
注:指令TEQ和EORS的指令区别在于TEQ指令不保存运算结果,使用TEQ进行相等测试,常于EQ、NE条件码配合使用,当俩个数据相等时,EQ有效,否则NE有效。
- 1.16.ARM汇编指令4之比较指令
- ARM汇编指令4
- ARM汇编之MOV指令
- ARM汇编指令之必知必会
- 【汇编指令】ARM指令集之PSR传送指令
- ARM几条汇编指令的比较
- ARM几条汇编指令的比较
- ARM 汇编指令(4)
- ARM汇编指令和体系结构之4月8号
- ARM汇编指令学习之开篇
- GNU ARM汇编伪指令之循环
- ARM 汇编伪指令
- ARM汇编指令集
- GNU ARM汇编指令
- 常用ARM汇编指令
- ARM汇编指令集
- ARM汇编伪指令
- ARM汇编伪指令
- [cv]Image transformation
- ACM集训日记-8月4日
- F
- 数据类型
- html+css3实现长方体效果
- 1.16.ARM汇编指令4之比较指令
- bzoj1669 [Usaco2006 Oct]Hungry Cows饥饿的奶牛(nlogn求最长不下降子序列)
- 有一个整数n,写一个函数f(n),返回0~n之间出现的“1”的个数,例如f(1)=1; f(13)=6(1,10,11,12,13一共6个1),最大的f(n)=n的n是多少
- memcached高可用集群原理及介绍
- 一些疑问
- 大数的四则运算之除法----Java代码实现
- Polya定理学习总结
- HDU6059(两棵字典树)
- JVM从起始到调优系列-1