冯诺依曼体系结构

储存程序计算机工作模型

  • 硬件
  • 程序员

    CPU当作for循环;

    IP:

  • 16位计算机:IP
  • 32位计算机:eIP
  • 64位计算机:rIP

X86汇编基础

X86的CPU寄存器

X86的CPU寄存器:

  • 通用寄存器
  • 段寄存器
  • 标志寄存器

32寄存器被称为通用寄存器,一般以E为首字母

32位寄存器=高16位+低16位
低16位寄存器中又存在AX,BX,CX,DX,BP,SI,DI,SP八个寄存器

通用寄存器中比较重要的如EBP(堆栈基指针),ESP(堆栈顶指针)
堆栈是计算机中非常基础的东西

段寄存器分为:CS,DS,ES,SS,FS,GS

指令内存地址的描述:CS+EIP

X86-64bit:通用寄存器扩展至64位,一般以R为首字母

计算机的汇编指令

mov指令:

b代表8位,w代表16位,l代表32位,q代表64位

movl %eax , %edx eax=edx; (寄存器寻址)
将eax(寄存器)内存放至edx中

movl $0x123 , %edx eax=edx; (立即寻址)
将$0x123放至edx中

movl %eax , %edx eax=edx; (直接寻址)
将eax(寄存器)内存放至edx中

movl (%ebx) , %edx edx=(int 32_t*)ebx; (间接寻址)
将将ebx的值作为内存地址所访问到的值放至edx中

movl 4(%ebx) , %edx edx=(int 32_t*)(ebx + 4); (变址寻址)
在间接寻址之时改变寄存器的数值

X86系统中,大多数指令可以直接访问内存地址

另外几个重要指令:

pushl %eax :

  • subl $4 , %esp
  • movl %eax , (%esp)

popl %eax :

  • movl (%esp) , %eax
  • addl $4 , %esp

call 0x12345:

  • pushl %eip(*)
  • movl $0x12345 , %eip(*)

ret(return):

  • popl %eip(*)

重要寄存器

eip:从main开始,自加1,调用其它指令时,修改eip,
无特殊说明时,eip在该条指令结束时,指向下一条指令

ebp:总是指向堆栈的栈底

esp:总是指向堆栈的栈顶

eax:暂存数据

实验分析:


学习总结:

首先,对于计算机系统而言,堆栈是非常重要的组成部分,许多指令在运行的过程中都是通过堆栈的方式来进行操作的。
其次,对于几个重要寄存器的掌握是非常必要的。

Linux内核分析第一周总结的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. Linux内核分析第一周——计算机是如何工作的

    冯诺依曼体系结构 核心思想 1.冯诺依曼是:数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 2.采用二进制作为计算机数值计算的基础,以0.1代表数值.不采用人类常用的十进制计数方法,二进制使 ...

  9. linux内核分析 第一周

    计算机是如何工作的 冯·诺依曼理论的要点是: 数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 冯·诺依曼体系结构 根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至 ...

  10. linux内核分析 第一周 计算机是如何工作的 20125221银雪纯

    我使用的c语言代码是: int g(int x) { return x + 1; } int f(int x) { return g(x); } int main(void) { return f(6 ...

随机推荐

  1. Alpha冲刺报告(11/12)(麻瓜制造者)

    今日已完成 邓弘立: 整合了主页的功能 符天愉: 大致上完成了留言部分的添加,删除,查询功能 江郑: 测试了剩余四个查询,一个添加接口,也搞定了接口说明. 刘双玉: 测试了剩余四个查询,一个添加接口, ...

  2. EF CodeFirst 数据库的操作

    生成数据库 首先需要通过Nuget安装Migration 这一步是初始化Migration操作. 首先打开程序包控制台, 工具——NuGet包管理器——程序包管理控制台 打开后,在控制台输入下面的命令 ...

  3. 小程序push数组,渲染不出来解决办法

    1.在data中,定义一个空数组: zhou_time:[] 2.声明: var zhou_time = this.data.zhou_time; 3.PUSH赋值: zhou_time.push({ ...

  4. android studio InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClass annota

    如果 你的项目中使用了注解插件 比如butterknife   升级3.1之后打包编译  出现以下错误提示 InnerClass annotations are missing correspondi ...

  5. 8、JVM--虚拟机字节码执行引擎

    8.1.概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上 ...

  6. WebView之加载网页时增加进度提示

    上一节讲了一些webview的基本使用以及在记载网页时如何屏蔽掉第三方浏览器,使我们自己开发的程序成为一个微型浏览器.那么这一节将一下在webView加载网页的过程中如何加上进度提示.效果图如下: 主 ...

  7. jqgrid 将列头设置为超链接或按钮

    有时,需要将某个列头设置为超链接或按钮,点击超链接或按钮能够跳转至其他页面(或执行一个事件操作). 可以把 label 值设置成一个a标签或button 代码如下: colModel: [{ labe ...

  8. 一个struts2程序

    1.index.jsp 2.struts.xml 3.Loginaction.java package action; import java.io.File; import java.io.File ...

  9. Android开发——官方推荐使用DialogFragment替换AlertDialog

    )比如当屏幕旋转时,AlertDialog会消失,更不会保存如EditText上的文字,如果处理不当很可能引发异常,因为Activity销毁前不允许对话框未关闭.而DialogFragment对话框会 ...

  10. POJ1807&&1276

    DP专题下的背包专题 其实就是PJ的那些东西了 主流的背包有三种:01背包,完全背包和多重背包 其中01背包和完全背包的转移就比较经典了,而多重背包也是在前两者基础上演变一下即可 1837 题意:有一 ...