程涵 
原创博客
《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. JavaScript利用Date实现简单的倒计时实例

    介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法.Date在js中和Array类似,都是拥有自己的特殊方法的特殊对象. 创建 Date 对象的语法: var my ...

  2. sublime text3 当运行报错error时,取消显示路径path的方法

    sublime text3 每当运行报错error时,都会出现一长串的path路径,如何不显示呢? 可以通过注释掉Packages/Default/exec.py的四个特定行来更改. 首先,您需要从P ...

  3. $.toJSON和eval的区别

    1.$.toJSON是jquery的方法.eval是javascript的方法 2.eval兼容的浏览器多,$.toJSON有可能解析不了的json格式的数据,eval可以.

  4. OpenCV——Harr特征

  5. Recent papers on Action Recognition | 行为识别最新论文

    CVPR2019 1.An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognit ...

  6. C++之强制类型转化

    在C++语言中新增了四个关键字static_cast.const_cast.reinterpret_cast和dynamic_cast.这四个关键字都是用于强制类型转换的.我们逐一来介绍这四个关键字. ...

  7. 安装ubuntu系统 ——分区

    安装ubuntu 系统主要分四个区 目录 建议大小 格式 描述 / 10G-20G ext4 根目录 swap <2048M swap 交换空间 /boot 400M左右 ext4 Linux的 ...

  8. OutputFormat输出过程的学习

    花了大约1周的时间,最终把MapReduce的5大阶段的源代码学习结束掉了.收获不少.就算本人对Hadoop学习的一个里程碑式的纪念吧.今天花了一点点的时间,把MapReduce的最后一个阶段.输出O ...

  9. pygame 入门实例

    本文基于win7(64) + py3.5(64)环境. 本文是这里的一篇学习笔记.加入了自己的理解. 本文最终目的是实现一个飞机躲避导弹的游戏. 1.核心概念 pygame 的核心概念有: Surfa ...

  10. 使用 spring-boot-devtools 进行热部署

    2019/3/5 更新: 发现热部署不生效,出现页面显示error的错误,然后在 application.properties 中注释了下面两行成功实现热部署(直接删掉也可以) #spring.dev ...