【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 一.第二周学习内 ...
随机推荐
- UI(四)之拓扑图创建
关键函数: 1.LoadMap void CTopology::LoadMap() { //m_map.RemoveAllLayers(); AddLayersBasemap(); //AddLaye ...
- 判断用户访问方式为pc or Phone
<scripttype="text/javascript"> (function () { var sUserAgent= navigator.userAgent.to ...
- 【Alpha 冲刺】 4/12
今日任务总结 人员 今日原定任务 完成情况 遇到问题 贡献值 胡武成 完成API文档编写 已完成 会遗漏一些部分的api,但是通过群里询问以及对页面的review解决 孙浩楷 根据UI设计, 实现左侧 ...
- Case Study: 技术和商业的结合点在哪里?
如果要制作过去两三年里最火爆的企业级产品创业公司名单,里面一定少不了一家叫做Docker的公司.先别管Docker是做什么的,只要记住这是这几年企业级IT产品里最重要的热点技术,有一半的大型企业已经在 ...
- 解决ThinkPHP中开启调试模式无法加载模块的问题。
刚开始学习ThinkPHP就遇到这种问题,还是自己粗心. 错误如下: 原因:开启调试模式,区分大小写的,要把模块名首字母大写就OK了.也就是: [plain] view plain copy http ...
- [python]如何理解uiautomator里面的 right,left,up,down 及使用场景
关于Android自动化uiautomator 框架,前面有讲在有些场景下,比如需要在设置界面中将某些选项开关打开或者关闭(前提是这些选项和开关的控件(resourceId,className,tex ...
- Swift 并行编程现状和展望 - async/await 和参与者模式
这篇文章不是针对当前版本 Swift 3 的,而是对预计于 2018 年发布的 Swift 5 的一些特性的猜想.如果两年后我还记得这篇文章,可能会回来更新一波.在此之前,请当作一篇对现代语言并行编程 ...
- 3.3 线程---Handler消息传递机制浅析
Handler的执行流程图: 当我们的子线程想修改Activity中的UI组件时,我们可以新建一个Handler对象,通过这个对象向主线程发送信息;而我们发送的信息会先到主线程的MessageQueu ...
- Java 中long类型转换成为int类型时可能会出错的地方
那计算两个日期之间间隔的天数为例来说明这个问题. 下面是计算日期间隔天数的简单算法(主要出错的地方为红色标注的地方): public int getDay(String startDate, Stri ...
- mvn dependency:tree
jar依赖冲突解决实践 前言 随着功能的增多,各种中间件的引入.应用以来的各种jar的规模极具膨胀,出现jar冲突和Class冲突的问题层出不穷,让人不胜其扰.本文针对冲突,提供一个排查和定位问题的最 ...