首页
社区
课程
招聘
[求助]程序编译的问题
发表于: 2005-3-27 17:21 3526

[求助]程序编译的问题

2005-3-27 17:21
3526
一个很小的函数,但编译器竟译的很复杂,这是为什么?
函数是: char c(){return 'c'}
反汇编后发现被译成:
004010D0 >/> 55             PUSH EBP
004010D1  |. 8BEC           MOV EBP,ESP
004010D3  |. 83EC 40        SUB ESP,40
004010D6  |. 53             PUSH EBX
004010D7  |. 56             PUSH ESI
004010D8  |. 57             PUSH EDI
004010D9  |. 8D7D C0        LEA EDI,DWORD PTR SS:[EBP-40]
004010DC  |. B9 10000000    MOV ECX,10
004010E1  |. B8 CCCCCCCC    MOV EAX,CCCCCCCC
004010E6  |. F3:AB          REP STOS DWORD PTR ES:[EDI]
004010E8  |. B0 63          MOV AL,63       //真正有用的好象只有这句。
004010EA  |. 5F             POP EDI
004010EB  |. 5E             POP ESI
004010EC  |. 5B             POP EBX
004010ED  |. 8BE5           MOV ESP,EBP
004010EF  |. 5D             POP EBP
004010F0 >\. C3             RETN
除了那句真正有用的,其它代码都在干吗?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
主要是因为返回的是单字节值吧
所以要加一些特殊处理
2005-3-27 17:55
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
004010D0 >/> 55             PUSH EBP
004010D1  |. 8BEC           MOV EBP,ESP
004010D3  |. 83EC 40        SUB ESP,40
004010D6  |. 53             PUSH EBX
004010D7  |. 56             PUSH ESI
004010D8  |. 57             PUSH EDI
004010D9  |. 8D7D C0        LEA EDI,DWORD PTR SS:[EBP-40]
004010DC  |. B9 10000000    MOV ECX,10
004010E1  |. B8 CCCCCCCC    MOV EAX,CCCCCCCC
004010E6  |. F3:AB          REP STOS DWORD PTR ES:[EDI]
004010E8  |. B0 63          MOV AL,63       //真正有用的好象只有这句。
004010EA  |. 5F             POP EDI
004010EB  |. 5E             POP ESI
004010EC  |. 5B             POP EBX
004010ED  |. 8BE5           MOV ESP,EBP
004010EF  |. 5D             POP EBP

建立框架,设置magic number可能是为了调试
2005-3-27 17:57
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
4
用VC的DEBUG模式编译的吧?
如果选最大优化的话这个函数肯定转成inline,看不到了.
2005-3-27 21:31
0
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
各位说的都有道理。
还想问一下,forgot所说的“设置magic number”是什么意思?能不解说一下,难道这是调试的常用办法?
2005-3-28 08:10
0
游客
登录 | 注册 方可回帖
返回