首页 > 技术文章 > 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

Justtry 2016-02-23 20:21 原文

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

学号:20135114

姓名:王朝宪

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

1

1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同)

使用

  1. gcc –S –o main.s main.c -m32

 

命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同

 

  1. int g(int x)
  2. {
  3.   return x + 3;
  4. }
  5.  
  6. int f(int x)
  7. {
  8.   return g(x);
  9. }
  10.  
  11. int main(void)
  12. {
  13.   return f(8) + 1;
  14. }

 

图一:简单的c程序代码

图二:实验楼操作过程

图三:通过反汇编c程序而生成的汇编代码

 

2)根据本周所学知识分析汇编代码的工作过程,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:

  •  

    题目自拟,内容围绕计算机是如何工作的进行;

  •  

    博客中需要使用实验截图

  •  

    博客内容中需要仔细分析汇编代码的工作过程中堆栈的变化

  •  

    总结部分需要阐明自己对“计算机是如何工作的”理解。

 

代码分析:汇编代码工作过程中堆栈变化

 

 总结:存储程序计算机模型为冯诺依曼体系结构,计算机的CPU从IP所指向的内存中的代码段取一条指令执行,执行完IP自加1,再继续执行下一条,这就是计算机的工作过程。

3)请提交博客文章URL到网易云课堂MOOC平台,编辑成一个链接可以直接点击打开。

推荐阅读