Linux内核分析》第一周.计算机是如何工作的?
                                                                       20135204 郝智宇 
一、存储程序计算机工作模型
1.      冯诺依曼体系结构:
数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
内存保存指令和数据,CPU负责解释和执行这些指令。
2.    API:
程序员与计算机的接口界面。
3.    EIP:
CALL  RET  IMP
 
二、X86汇编基础
1.      X86CPU的寄存器
E开头32位,R开头64位。
  堆栈是计算机中非常基础性的东西。
2.      代码段、堆栈段、数据段、附加段
3.      CPU在实际取指令时根据cs:eip来准确定位一个指令。
4.      32位和64位核心机制上差别不大。
5.      汇编指令:
Movl,pushl,popl,call,ret,leave…
AT&T汇编格式与Intel格式略有不同。Linux内核使用的是AT&T汇编格式。
Pushl:栈的位置在增长;Popl:栈的位置在收缩。
Esp栈顶;ebp栈底。
Eip不能直接被修改,只能call,ret.
 
三、汇编一个简单的C程序分析其汇编指令执行过程(实验楼环境下操作)

1.  新建一段代码,粘贴题目所给的代码段并进行修改之后,保存:
 





2.  以下为这段代码的汇编指令:


3.  删除掉以点(.)开头的指令之后,得到干净完整的汇编指令如下:
g:
pushl   %ebp
movl    %esp, %ebp
movl    8(%ebp), %eax
addl    $5, %eax
popl    %ebp
ret
f:
pushl   %ebp
movl    %esp, %ebp
subl    $4, %esp
movl    8(%ebp), %eax
movl    %eax, (%esp)
call    g
leave
ret
main:
pushl   %ebp
movl    %esp, %ebp
subl    $4, %esp
movl    $10, (%esp)
call    f
addl    $1, %eax
leave
ret

4.分析汇编代码的工作过程中堆栈的变化如下:
(接上)
四.对“计算机是如何工作的”的理解:

计算机的执行指令都是机器语言,通过汇编语言和高级语言编出来的程序通过计算机内的编译程序,将程序编译成计算机可执行的文件来进行工作,交换数据。
计算机在实际工作工程中要涉及大量的跳转指针操作。计算机通常是顺序执行一条一条的指令,如果有必要就通过寄存器跳转到特定的地址,再执行,然后通过
一系列机制返回原有的地址,继续顺序执行。计算机里,内存保存指令和数据,CPU负责解释和执行这些指令。 郝智宇 无转载 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

《Linux内核分析》第一周学习小结 计算机是如何工作的?的更多相关文章

  1. LINUX内核分析第一周学习总结——计算机是如何工作的

    LINUX内核分析第一周学习总结——计算机是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...

  2. Linux内核分析第一周学习博客 --- 通过反汇编方式学习计算机工作过程

    Linux内核分析第一周学习博客 通过反汇编方式学习计算机工作过程 总结: 通过这次对一个简单C程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的 ...

  3. linux内核分析第一周学习笔记

    linux内核分析第一周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  4. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  5. Linux内核分析第一周学习总结:计算机是如何工作的?

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.冯诺依曼体系 ...

  6. 20135320赵瀚青LINUX内核分析第一周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.概述 第一周的学习内容主 ...

  7. Linux内核分析——第一周学习笔记20135308

    第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储 ...

  8. Linux内核分析——第一周学习笔记

    20135313吴子怡.北京电子科技学院 chapter 1 知识点梳理 第一节 存储程序计算机工作模型 1.冯诺依曼体系结构:即具有存储程序的计算机体系结构.目前大多数拥有计算和存储功能的设备(智能 ...

  9. Linux内核设计第一周学习总结 计算机如何工作

    北京电子科技学院 20135310陈巧然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002 ...

随机推荐

  1. 阿里八八Alpha阶段Scrum(1/12)

    任务分配 叶文滔:整体框架UI设计.作为组长进行任务协调 俞鋆:后端服务器及数据库搭建 王国超:日程模块多日显示部分设计 黄梅玲:日程模块单日显示部分设计 林炜鸿:日程模块文本添加部分设计 张岳.刘晓 ...

  2. Angular简介与程序架构

    什么是angularJs 基于javascript开发的客户端应用框架,使我们可以更加快捷,简单的开发web应用. 诞生于2009年,后来被google收购,用在了很多项目中. 适用于CRUD应用或者 ...

  3. Mac svn使用学习-4-客户端cli命令详解

    客户端cli的使用 WC:Working Copy 你的工作区 将文件或目录版本化,这样下一次提交到存储库的时候,他们就都会被提交上去.能实现版本化的命令有: add 1.import 是否访问存储库 ...

  4. 运行metamascara时出现的一些错误

    The difference between mascara and the extension Mascara Is in alpha and some of it's behaviors are ...

  5. POJ3468(线段树区间求和+区间查询)

    https://vjudge.net/contest/66989#problem/C You have N integers, A1, A2, ... , AN. You need to deal w ...

  6. Scrapy 框架(二)数据的持久化

    scrapy数据的持久化(将数据保存到数据库) 一.建立项目 1.scrapy startproject dushu 2.进入项目 cd dushu 执行:scrapy genspider -t cr ...

  7. Dsu on Tree

    这个属于一种技巧,可以解决类似于子树询问无修改可离线的问题,一些点分治的问题也可以用Dsu on Tree解决,并且常数较小,代码复杂度低,很具有可写性. 整体上的意思就是继承重儿子的信息,暴力修改轻 ...

  8. vi学习

    刚开始学习vi,所以,一步一步开始 先贴出一个相关的学习链接https://www.cnblogs.com/ranjiewen/p/5901181.html 这个学习链接里面的东西还是比较详细的,但是 ...

  9. UML类图(Unified Modeling Language Class Diagrams)

    统一建模语言(UML) |  类图 什么是UML? UML是一种用于可视化描述系统,具有广泛用途的建模语言.作为一种标准化的图形语言,在软件工业中被用于软件系统部件的具体化,可视化,结构化描述以及撰写 ...

  10. Go语言安全编码规范-翻译(分享转发)

    Go语言安全编码规范-翻译 本文翻译原文由:blood_zer0.Lingfighting完成 如果翻译的有问题:联系我(Lzero2012).匆忙翻译肯定会有很多错误,欢迎大家一起讨论Go语言安全能 ...