码迷,mamicode.com
首页 > 其他好文 > 详细

简单C程序生成的汇编代码分析

时间:2016-02-29 00:21:47      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

首先给出完整的C代码:

int g(int x)
{
return x+11;
}
int f(int x)
{
return g(x);
}
int main(void)
{
return f(8)+1;
}

使用命令:gcc –S –o hw001.s hw001.c -m32

对应生成的IA32汇编代码如图所示:

技术分享技术分享技术分享

暂不分析以“.”开头的行,得到程序如下:

g:
pushl %ebp
movl %esp ,%ebp
movl 8(%ebp) ,%eax
addl $11 ,%eax
popl %ebp
ret
f:
pushl %ebp
movl %esp ,%ebp
subl $4 ,%esp
movl 8(%ebp) ,%eax
movl %eax ,(%esp)
call g
leave
ret
main:
pushl %ebp
movl %esp ,%ebp
subl $4 ,%esp
movl $8 ,(%esp)
call f
addl $1 ,%eax
leave
ret

 

 

 

 

 

 

 

 

by昆仑雪狐

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

简单C程序生成的汇编代码分析

标签:

原文地址:http://www.cnblogs.com/snowfox2016/p/5225937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!