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

  • 实验截图:


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

两个宏指令:enter, leave

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

  • 执行完全部命令

以上是实验部分。


  • 阐明自己对“计算机是如何工作的”理解。

引用:Basics of Binary Numbers

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的这门课程而有机会更加接近计算机是如何工作的这一个问题。
如何回答这个问题,可以从客观的角度回答,由硬件系统(hardware system)和软件系统(software system)两部分组成的。
引用了有关二进制的文章,是因为一直以来都对二进制感到很好奇,仅仅靠0和1就可以让计算机如此快速而高效的运作。
计算机的存储记忆能力和逻辑判断能力让人们不需要进行任何的干预,在程序控制下,计算机可以连续、自动地工作。
现在的我对于计算机如何工作还是一知半解的,希望在今后的课程中不断探索,形成自己对于计算机工作机制的更加多方面和深刻的理解。
 
 
 
 
程涵

【MOOC EXP】Linux内核分析实验一报告的更多相关文章

  1. 【MOOC EXP】Linux内核分析实验八报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的切换和系统的一般执行过程 知识点 ...

  2. 【MOOC EXP】Linux内核分析实验七报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 可执行程序的装载 知识点梳理 一.预处 ...

  3. 【MOOC EXP】Linux内核分析实验六报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的描述和进程的创建 知识点梳理: ...

  4. 【MOOC EXP】Linux内核分析实验二报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  [操作系统是如何工作的]   教学内 ...

  5. 【MOOC EXP】Linux内核分析实验三报告

     程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [跟踪分析Linux内核的启动过程] ...

  6. 【MOOC EXP】Linux内核分析实验四报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [使用库函数API和C代码中嵌入汇编代 ...

  7. 【MOOC EXP】Linux内核分析实验五报告

    程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 ...

  8. “Linux内核分析”实验一报告

    张文俊 + 原创作品转载请注明出处 + <Linux 内核分析> MOOC 课程 实验要求: 1.总结部分要求阐明自己对“计算机是如何工作的”理解: 2.博客中需要使用实验截图: 实验内容 ...

  9. “Linux内核分析”实验二报告

    张文俊 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.第二周学习内 ...

随机推荐

  1. DevExpress04、LayoutControl、GalleryControl

    首先需求是通过LayoutControl控件设计下图所示的窗体: 从该界面的设计过程 1.向窗体中添加LayoutControl控件 在将该控件拖入窗体后,最好立即设置该控件的尺寸和位置.拖入后,在如 ...

  2. GitKraken 团队项目使用教程

    前期准备:刚下载好要配置些东西,这些跟着教程走就好了,现在主要是讲团队项目的使用,创建分支 和Fork项目到个人仓库,请参考这篇博客的前两个点 1.将项目克隆到本地 打开GitKraken 点击Fil ...

  3. PyQt5--QSlide

    # -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...

  4. layui小封装方法

    //打开加载动画function LayerLoad() { layui.use('layer', function () { var layer = layui.layer; layer.load( ...

  5. 配置使用;yum安装slatstack的master,minion<at>centos6_x86_64

    使用: ####################################### 配置: ####################################### 安装: 服务端安装: [ ...

  6. OpenCV——模板匹配

    minMaxLoc函数: void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, ...

  7. python面试一:python2与python3的区别一

    1.默认编码方式不同:py3用的是utf-8,变量名更为广泛.2.去除<>改用!=3加入as 和with关键字4./除法默认数据类型不同 py2 5/3=1 py3 5//3=15.去掉了 ...

  8. JavaScript函数注意点

    1.return 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有return语句,函数执行 ...

  9. JAVA之多线程概念及其几种实现方法优劣分析

    1. 多线程 程序:指令集,静态的概念 进程:操作系统调动程序,是程序的一次动态执行过程,动态的概念 线程:在进程内的多条执行路径 Ps:单核的话进程都是虚拟模拟出来的,多核处理器才可以执行真正的多线 ...

  10. WWDC 2015 苹果发布会 笔记

    北京时间2015年6月9日凌晨一点,美国旧金山,WWDC 2015苹果发布会,早前知道ios9会更注重系统的优化,看来果真如此,不过最让我惊讶的是Swift居然宣布开源,当时我就震惊了,不过Swift ...