冯诺依曼体系结构

储存程序计算机工作模型

  • 硬件
  • 程序员

    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. Lombok 继承时应注意的点

    lombok项目的产生就是为了省去我们手动创建getter和setter等基本方法的麻烦,它能够在我们编译源码的时候自动帮我们生成getter和setter等方法.即它最终能够达到的效果是:在源码中没 ...

  2. 2-2 R语言基础 向量

    #Vector 向量的三种创建方法,两个参数:类型,长度 > x <- vector("character",length=10)> x1 <- 1:4&g ...

  3. 利用单例模式设计数据库连接Model类

    之前在<[php]利用php的构造函数与析构函数编写Mysql数据库查询类>(点击打开链接)写过的Mysql数据库查询类还不够完美,利用<[Java]单例模式>(点击打开链接) ...

  4. Scala学习之路 (八)Scala的隐式转换和隐式参数

    一.概念 Scala 2.10引入了一种叫做隐式类的新特性.隐式类指的是用implicit关键字修饰的类.在对应的作用域内,带有这个关键字的类的主构造函数可用于隐式转换. 隐式转换和隐式参数是Scal ...

  5. MUST_COMPLETE

    应用: xxx主机: xxx时间: 2018-03-07 04:34:03.887线程: [scheduler-1]级别: ERROR Class: org.springframework.sched ...

  6. leetcode322—Coin Change

    You are given coins of different denominations and a total amount of money amount. Write a function ...

  7. java操作数据库的事务支持

    一.需求背景: 我们生活经常遇到一个情况:在购买商品的时候,已经支付的了,那么商品应该处于已购买订单里.而不是付款之后,已购买商品没有. 还有转账的时候,转出方和转入方都需要扣减相应的金额,而不是一方 ...

  8. easyui validatebox textbox 使用例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormTextbox ...

  9. 蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)

    Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...

  10. 六,ESP8266 TCP Client(基于Lua脚本语言)

    今天不知道是不是让我姐挺失望.......很多时候都不知道自己努力的方向对不对,,以后能不能带给家人最美好的期盼...... Init.lua 没啥改变,,就改了一下加载Client.lua gpio ...