首页
社区
课程
招聘
[求助][求助]请问 return false; 这条 C++语句在汇编里面应该是什么样的呢 ?
发表于: 2011-1-6 17:37 6262

[求助][求助]请问 return false; 这条 C++语句在汇编里面应该是什么样的呢 ?

2011-1-6 17:37
6262
请问   return false;   这条  C++语句在ASM汇编里面应该是什么样的呢 ?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
2
mov eax,0
ret
2011-1-6 18:02
0
雪    币: 358
活跃值: (662)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
xor eax, eax
retn <- 这个看什么调用方式吧...
2011-1-6 19:00
0
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
上面两人的回答不对,那只是简单C代码(包括只使用C语言特性的C++函数),最优化编译,不开启编译器附加特性时的情况。

C++
答案是:不确定,有诸多因素需要确定,至少有:
1、C++函数返回会局部对象触发析构,根据局部对象的使用/实现情况,可能引入附加的指令
2、return语句如果处于try/catch中,会引起C++异常的相关runtime代码的指令执行。
(编译器相关,vc的C++异常使用SEH实现,可以参考 _try/_except/_finally;也有用类似long jump/signal实现的异常处理)
3、受编译选项影响。
比如,VC中的栈溢出检查,会导致return时在pop ebp前多一个checksecuritycookie
2011-1-7 01:49
0
雪    币: 4872
活跃值: (2611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道  
mov al,0
retn

是不是
2011-1-7 08:29
0
雪    币: 21
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
周全的考虑

所以说具体情况要具体反汇编
2011-1-7 09:37
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
7
典型的情况是:

xor eax,eax
...
retn


在最近的 retn 前会把 eax 清零。
2011-1-7 12:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jsm
8
自己写一下,然后运行在反汇中看就可以了!
2011-1-9 10:46
0
雪    币: 182
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
0代表faulse,非0就是true
2011-1-9 18:48
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
找个编译器调试一下
2011-1-9 20:42
0
游客
登录 | 注册 方可回帖
返回
//