通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
2016-02-23 20:21 20135114王朝宪 阅读(479) 评论(0) 编辑 收藏 举报实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
学号:20135114
姓名:王朝宪
注: 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
1
1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同)
使用
- gcc –S –o main.s main.c -m32
命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同
- int g(int x)
- {
- return x + 3;
- }
- int f(int x)
- {
- return g(x);
- }
- int main(void)
- {
- return f(8) + 1;
- }
图一:简单的c程序代码
图二:实验楼操作过程
图三:通过反汇编c程序而生成的汇编代码
2)根据本周所学知识分析汇编代码的工作过程,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:
-
题目自拟,内容围绕计算机是如何工作的进行;
-
博客中需要使用实验截图
-
博客内容中需要仔细分析汇编代码的工作过程中堆栈的变化
-
总结部分需要阐明自己对“计算机是如何工作的”理解。
代码分析:汇编代码工作过程中的堆栈变化
总结:存储程序计算机模型为冯诺依曼体系结构,计算机的CPU从IP所指向的内存中的代码段取一条指令执行,执行完IP自加1,再继续执行下一条,这就是计算机的工作过程。
3)请提交博客文章URL到网易云课堂MOOC平台,编辑成一个链接可以直接点击打开。