5#Linux内核分析#学习笔记01

原创作品转载请注明出处,《Linux内核分析》MOOC课程 http://mooc.study.163.com/course/USTC-1000029000

实验步骤:

1. 在Linux下编写一个C语言程序main.c

int g(int x)
{
      return x + 2;
}

int f(int x)
{
      return g(x);
}

int main(void)
{
      return f(6) + 3;
}

2. 将main.c编译成汇编语言文件main.s
gcc -S -o main.s main.c -m32

3. 去掉main.s文件中以点号"."开头的行,得到汇编代码如下:

  1    g:                              ;g()函数 
  2         pushl   %ebp                     
  3         movl    %esp, %ebp               
  4         movl    8(%ebp), %eax            
  5         addl    $2, %eax                 
  6         popl    %ebp                     
  7         ret                              
  8    f:                              ;f()函数                                                                                                                        
  9         pushl   %ebp                     
 10         movl    %esp, %ebp               
 11         subl    $4, %esp                 
 12         movl    8(%ebp), %eax            
 13         movl    %eax, (%esp)             
 14         call    g                        
 15         leave                            
 16         ret                              
 17    main:                           ;main()函数
 18         pushl   %ebp                     
 19         movl    %esp, %ebp               
 20         subl    $4, %esp                 
 21         movl    $6, (%esp)               
 22         call    f                        
 23         addl    $3, %eax                 
 24         leave                            
 25         ret     

4. 从第17行开始执行main函数

初始状态:17 main:
18 pushl %ebp
19 movl %esp, %ebp
20 subl $4, %esp
21 movl $6, (%esp)
22 call f
9 pushl %ebp
10 movl %esp, %ebp
11 subl $4, %esp
12 movl 8(%ebp), %eax
13 movl %eax, (%esp)
14 call g
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5 addl $2, %eax
6 popl %ebp
7 ret
15 leave
16 ret
23 addl $3, %eax
24 leave

5. 总结

目前绝大部分的计算机都是采用冯•诺依曼体系结构,即存储程序计算机模型。

计算机执行程序时,首先是CPU控制器从内存获得第一条指令的地址,CPU取得这个指令并执行,然后CPU控制器生成下一条要执行的指令的地址。内存中保存程序的指令和数据,ALU单元负责一些运算操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容