简单C程序生成的汇编代码分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单C程序生成的汇编代码分析相关的知识,希望对你有一定的参考价值。
首先给出完整的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程序生成的汇编代码分析的主要内容,如果未能解决你的问题,请参考以下文章
通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
理解计算机的工作方式——通过汇编一个简单的C程序并分析汇编代码
通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的