【MOOC EXP】Linux内核分析实验一报告
程涵
原创博客
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
【反汇编一个简单的C程序】
- 实验截图:

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

两个宏指令:enter, leave

- 除特殊指明,eip在执行完某一条指令后会自动开始执行下一条指令。
- esp,ebp寄存器总是指向一个堆栈。esp指向栈顶,ebp指向栈底(栈底是相对的,每个函数有自己的基地址)。函数调用堆栈是由逻辑上多个堆栈叠加起来的。
- 函数的返回值默认使用eax寄存器存储返回给上一级函数。

- 刚开始,指向一个空的堆栈。

- pushl %ebp
就是把ebp的值放入,ebp的值为0.

- movl %esp, %ebp
压栈时,把esp的位置向下移动。
ebp指向标号1的位置。


- subl $4, %esp
将esp向下移动一个位置。
- movl $8, (%esp)
把8放到标号2的位置。
- call f
相当于:
pushl %eip
movl f, %eip

- pushl %ebp
移动ebp,同时esp自动向下移动一位。

- movl %esp, %ebp

- subl $4, %esp

- movl 8(%ebp), %eax
变址寻址。将ebp的位置向上移动两位,内容是8。 eax=8。
- movl %eax, (%esp)
把8放到esp的位置。

- call g

(更改15)
- 执行完g函数

- 执行完f函数的leave命令

- 执行完全部命令

以上是实验部分。
- 阐明自己对“计算机是如何工作的”理解。
For computers, binary numbers are great stuff because:
- They are simple to work with -- no big addition tables and multiplication tables to learn, just do the same things over and over, very fast.
- They just use two values of voltage, magnetism, or other signal, which makes the hardware easier to design and more noise resistant.
对于计算机,二进制数字是伟大的,因为他们是简单的一起工作,没有什么大的加法表和乘法表学习,只是做同样的事情一遍又一遍,速度非常快。而且他们仅仅使用电压,磁,或其它信号,这使得硬件更易于设计和更抗噪声的两个值。
【MOOC EXP】Linux内核分析实验一报告的更多相关文章
- 【MOOC EXP】Linux内核分析实验八报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的切换和系统的一般执行过程 知识点 ...
- 【MOOC EXP】Linux内核分析实验七报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 可执行程序的装载 知识点梳理 一.预处 ...
- 【MOOC EXP】Linux内核分析实验六报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的描述和进程的创建 知识点梳理: ...
- 【MOOC EXP】Linux内核分析实验二报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [操作系统是如何工作的] 教学内 ...
- 【MOOC EXP】Linux内核分析实验三报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [跟踪分析Linux内核的启动过程] ...
- 【MOOC EXP】Linux内核分析实验四报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [使用库函数API和C代码中嵌入汇编代 ...
- 【MOOC EXP】Linux内核分析实验五报告
程涵 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 ...
- “Linux内核分析”实验一报告
张文俊 + 原创作品转载请注明出处 + <Linux 内核分析> MOOC 课程 实验要求: 1.总结部分要求阐明自己对“计算机是如何工作的”理解: 2.博客中需要使用实验截图: 实验内容 ...
- “Linux内核分析”实验二报告
张文俊 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.第二周学习内 ...
随机推荐
- 使用ubuntu过程中遇到的问题汇总
使用ubuntu过程中遇到的问题汇总 1.使用图形界面设置免密码登录之后,改回密码登陆失效 解决方案: https://askubuntu.com/questions/211084/how-do-i- ...
- 【转】网段,子网掩码,网络标识,IP划分
网段指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)直接通讯的那一部分.就是从一个IP到另一个IP 好比 从192.168.0.1到192.168.255.255这之间就是一个网段 ...
- 浏览器中上传Excel文件,服务器获取Excel字段。写入的数据库中。操作Excel的方式jxl和poi。
从Excel中获取字段,官方给我们提供了方法,地址https://poi.apache.org/components/spreadsheet/quick-guide.html#CellContents ...
- WorldWind源码剖析系列:网络下载类WebDownload
网络下载类WebDownload封装了对请求的瓦片进行网络下载的相关操作.该类使用了两个委托类型和一个枚举类型. 该类的类图如下. 网络下载类WebDownload各个字段和属性的含义说明如下: st ...
- JAVA框架 Mybaits 核心配置
一:mybaits的核心配置文件:SqlMapConfig.xml 配置文件中需要关注的属性: 二.properites属性:一般引用配置文件(properites文件)比如:数据库的配置.我们可以编 ...
- Java中splite的用法与小技巧
在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧.如执行:"2|33|4".split(&quo ...
- Android Layout属性笔记
android:id 为控件指定相应的ID android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串 android:gravity 指定Vi ...
- Hadoop体系结构杂谈
hadoop体系结构杂谈 今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底 ...
- linux中原子操作实现方式
原子操作提供了指令原子执行,中间没有中断.就像原子被认为是不可分割颗粒一样,原子操作(atomic operation)是不可分割的操作. 如下面简单的例子: Thread 1 ...
- 20155216 Exp9 Web安全基础实践
Exp9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? 1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等. 2.不要使用动态拼装sql,可以 ...