- 论坛徽章:
- 11
|
本帖最后由 zylthinking 于 2013-01-28 15:30 编辑
superwujc 发表于 2013-01-28 15:13
回复 6# zylthinking
我的系统
反汇编吧, 不管怎么样, 多半就是编译器自己在搞鬼了, 但貌似真的会影响 var_list 这些东西, 不知为何这么干
错了, 错了, 没仔细看, main 的反汇编貌似是没错的, 还是保证了压栈顺序, 估计是 func 的毛病了?
Dump of assembler code for function func:
0x00001ef0 <func+0>: push %ebp
0x00001ef1 <func+1>: mov %esp,%ebp
0x00001ef3 <func+3>: push %esi
0x00001ef4 <func+4>: sub $0x24,%esp
0x00001ef7 <func+7>: call 0x1efc <func+12>
0x00001efc <func+12>: pop %eax
0x00001efd <func+13>: mov 0x10(%ebp),%ecx
0x00001f00 <func+16>: mov 0xc(%ebp),%edx
0x00001f03 <func+19>: mov 0x8(%ebp),%esi
0x00001f06 <func+22>: mov %esi,-0x8(%ebp)
0x00001f09 <func+25>: mov %edx,-0xc(%ebp)
0x00001f0c <func+28>: mov %ecx,-0x10(%ebp)
0x00001f0f <func+31>: lea -0x8(%ebp),%ecx
0x00001f12 <func+34>: mov %esp,%edx
0x00001f14 <func+36>: mov %ecx,0x4(%edx)
0x00001f17 <func+39>: lea 0x9c(%eax),%ecx
0x00001f1d <func+45>: mov %ecx,(%edx)
0x00001f1f <func+47>: mov %eax,-0x14(%ebp)
0x00001f22 <func+50>: call 0x1f64 <dyld_stub_printf>
0x00001f27 <func+55>: lea -0xc(%ebp),%eax
0x00001f2a <func+58>: mov %esp,%ecx
0x00001f2c <func+60>: mov %eax,0x4(%ecx)
0x00001f2f <func+63>: mov -0x14(%ebp),%eax
0x00001f32 <func+66>: lea 0xa4(%eax),%edx
0x00001f38 <func+72>: mov %edx,(%ecx)
0x00001f3a <func+74>: call 0x1f64 <dyld_stub_printf>
0x00001f3f <func+79>: lea -0x10(%ebp),%eax
0x00001f42 <func+82>: mov %esp,%ecx
0x00001f44 <func+84>: mov %eax,0x4(%ecx)
0x00001f47 <func+87>: mov -0x14(%ebp),%eax
0x00001f4a <func+90>: lea 0xac(%eax),%eax
0x00001f50 <func+96>: mov %eax,(%ecx)
0x00001f52 <func+98>: call 0x1f64 <dyld_stub_printf>
0x00001f57 <func+103>: add $0x24,%esp
0x00001f5a <func+106>: pop %esi
0x00001f5b <func+107>: pop %ebp
0x00001f5c <func+108>: ret
看的很复杂的样子, 不知能不能分析出来 |
|