if&memcmp指令

来源:互联网 发布:linux源码安装php 编辑:程序博客网 时间:2024/05/03 06:10

int flag;

int cmp_1,cmp_2;

.........

code

.........

/*

当cmp_1>cmp_2时,保存数据

*/

flag = memcmp(cmp_1,cmp_2,1);

if(flag)

{

     //code save data;

}

 

在调试的时候,发现只要cmp_1!=cmp_2,都能跳转到//code save data; 里面,跟原先的流程有很大的出入,在查看汇编的时候发现

 

if(flag) 翻译成汇编为 CBZ指令 

 

CBZ 在arm指令的意思是只要不是0,都执行if括号里面的code。

 

因此在使用if语句判断的时候,千万注意此情况的出现。if(cmp_1>cmp_2)

memcmp 是从首地址开始比较的,如果高为放在高地址,则比较有问题!!!!