您的位置:首页 > 其它

if&memcmp指令

2009-03-31 15:31 190 查看
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 是从首地址开始比较的,如果高为放在高地址,则比较有问题!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编