首页
社区
课程
招聘
[讨论]release编译模式有问题?if被判断忽略。
发表于: 2008-12-5 12:03 4102

[讨论]release编译模式有问题?if被判断忽略。

2008-12-5 12:03
4102
今天发现一个很郁闷的事情。
程序动态调用了一个dll的一个方法,方法的声明形式如下:
void testFun(int);

void testFun(int i)
{
    if(i==1)
    {
         //执行操作1
    }
    else
    {
         //执行操作2
    }
}

用Debug模式编译,一点问题都没有。可是如果用release编译的时候,if和else的判断就直接忽略了。OD看了下,汇编里面都没有cmp的判断。直接就是执行操作1,然后再执行的操作2。

这是什么原因呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我试试看:

mov eax,i
sub eax,1
jz 等于1

这里面没有cmp哦,但是照样实现你说的哦

所以,指令很丰富的。
2008-12-6 00:11
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
== 写成了 =?
2008-12-6 20:05
0
游客
登录 | 注册 方可回帖
返回
//