zoukankan      html  css  js  c++  java
  • Linux内核分析——计算机是如何工作的

    马悦+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

    一、计算机是如何工作的

    (一)什么是冯诺依曼体系结构

             冯诺依曼体系结构:就是指存储程序计算机。

    1、  从硬件角度:

    存储程序计算机工作模型:

    2、  从程序员角度:

    CPU抽象成for循环。

    (二)API:程序员与计算机的接口界面。

    ABI:程序与CPU的接口界面。

    (1)汇编指令。

    (2)约定使用怎样的寄存器。

    (3)大多数指令可以直接访问内存。(对于X86计算机指令集来讲)

    EIP:

    (1)自加一

    (2)指令长度不同

    (3)可以被不同的指令修改(call、ret、jmp)

    二、X86汇编基础

    (一)通用寄存器:

    (二)段寄存器:

    CPU在实际取指令时根据cs:eip来准确定位一个指令。

    (三)mov指令及几种内存寻址方式

              B、w、l、q分别代表8位、16位、32位、64位。

    寄存器模式,以%开头的寄存器标示符。

    立即数是以$开头的数值。

    直接寻址:直接访问一个指定的内存地址的数据。

    间接寻址:将寄存器的值作为一个内存地址来访问内存。

    变址寻址:在间接寻址之时改变寄存器的数值。

     (四)push、pop、call、ret

              Eip寄存器不能被直接修改,只能通过特殊指令间接修改。

    三、汇编一个简单的C程序分析其汇编指令执行过程

    实验内容:

    代码:

    int g(int x)

    {

      return x + 3;

    }

    int f(int x)

    {

      return g(x);

    }

    int main(void)

    {

      return f(8) + 1;

    }

    截图:

    分析:

    学习体会:

      本次课程的学习内容是计算机是如何工作的。计算机的基本原理是存储程序和程序控制。预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤。计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。

      程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作原理。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼原理。

  • 相关阅读:
    BZOJ3224普通平衡树——旋转treap
    我有一个梦想
    Python自动化测试入门
    Java为何这么难学?
    jmeter正则表达式书写
    fiddler抓包后Jmeter实现登录接口
    JMeter如何使用用户定义的变量
    第一篇博客说明
    React笔记_(5)_react语法4
    React笔记_(4)_react语法3
  • 原文地址:https://www.cnblogs.com/20135235my/p/5219970.html
Copyright © 2011-2022 走看看