看看C语句都生成了什么汇编指令
http://community.csdn.net/Expert/topic/4181/4181891.xml?temp=.9167749 问题点数:0、回复次数:4Top
1 楼carsinogen(电子水牛)回复于 2005-08-01 18:58:49 得分 0
空函数代码 build by devcpp4990
int main(void){}
//Assembler code
//Function: main
0x401290 <main>: push ebp //C函数中用ebp做指针[基址]对变量寻址
0x401291 <main+1>: mov ebp,esp
0x401293 <main+3>: sub esp,0x8 //生成一个堆栈框架存放(局部)变量
0x401296 <main+6>: and esp,0xfffffff0 //对齐?
0x401299 <main+9>: mov eax,0x0
0x40129e <main+14>: mov DWORD PTR [esp-4],eax
0x4012a1 <main+17>: mov eax,DWORD PTR [ebp-4] //这三条指令干啥用?
0x4012a4 <main+20>: call 0x401710 <_alloca>
0x4012a9 <main+25>: call 0x401380 <__main> //这两个call做了什么??
0x4012ae <main+30>: leave //释放堆栈
0x4012af <main+31>: ret //返回
0x4012a4 <main+20>: call 0x401710 <_alloca>
0x4012a9 <main+25>: call 0x401380 <__main>
请问这两条call指令都做了什么操作?
——这是一个让我巨迷惑的问题
Top
2 楼zara(Kyrie eleison)回复于 2005-08-01 20:01:54 得分 0
看你上面提到的另外个帖子, 看汇编的能力应该还算不错的, 为什么不自己进去瞧瞧呢?Top
3 楼carsinogen(电子水牛)回复于 2005-08-02 01:20:20 得分 0
zara(Kyrie eleison) :怎么进去呢?
我用的是dev c++,用查看cpu窗口得到汇编代码的。别的招就不会了Top
4 楼zara(Kyrie eleison)回复于 2005-08-02 10:15:48 得分 0
没有用过 dev c++, 但是, 它应该有 Goto 功能的吧, 即转移到某个指定的地址; 或者, 在那两个 call 上置个断点, 运行, 停下来之后, 用 Step-In 功能就可以进入子程了 (对应的是 Step-Over 单步调试功能, 它是把 call 或 loop 类指令作为一个指令来完成的, 直接就到下面的那个指令了)Top




