• 《Linux内核分析》 之 计算机是如何工作的


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

    《Linux内核分析》 之 计算机是如何工作的

    第一讲 冯 诺依曼体系结构

    1.冯 诺依曼体系结构是指具有存储程序的计算机系统

    1. 硬件:CPU与内存通过主线连接;CPU上有一块寄存器叫做IP,该寄存器相当于指针,总是指向内存的代码段;CPU总是执行IP指向的指令然后IP自加一
    2. 软件(计算机如何识别指令):通过ABI(程序与计算机的接口界面)

    2.大多数指令可以直接访问内存

    第二讲 X86汇编基础

    1. X86寄存器详解(以64位为例)

    2.CPU实际取指令的时候通过cs:eip来描述

    3.常见的寻址方式

    1. 寄存器寻址(操作的都是寄存器):将eax的值直接赋值给edx;
    2. 立即数寻址:将十六进制的数值123(这个立即数)直接放到edx中(和内存也没有关系);
    3. 直接寻址:将0x123这个地址所指向的内存数据放到寄存器edx中;
    4. 间接寻址:将ebx的值作为一个内存地址,这个地址所存储的数据放到edx中;
    5. 变址寻址:与间接寻址类似,是把ebx的值加上4作为地址

    4.几条重要指令

    %ebp是栈底指针;%esp是栈顶指针。函数的堆栈就由这两个指针划定。

    5.练习二

    【分析】

    1. 函数应该如下:

      int g(int x)
      {
      return x+8;
      }
      int main(void)
      {
      return g(x)-8;
      }

    第三讲 汇编一个简单的C语言程序(实验)

    【以自己的实验过程为例】

    1. 进入实验环境,编写简单的C程序

    2. 进行汇编

    1. 保存
    2. 根据day_01.s汇编代码分析堆栈变化

    总结

    【计算机是如何工作的】

    1. 硬件:冯诺依曼结构 (CPU+内存);
    2. 软件:利用堆栈为函数运行创造条件;同时使用分级存储使得数据和程序无差别的以同样规格进行存储
  • 相关阅读:
    Centos 7 安装Redis5 详细步骤 备忘录笔记
    【瞎口胡】后缀自动机(SAM)
    IDEA 热部署Devtools
    CentOS7 安装 ZooKeeper
    ClangFormat
    const * 和 * const
    mybatisplus
    Android动态权限请求
    Android工程获取包内的MD5值
    页面多次跳转加载时,window.onscroll方法失效问题解决
  • 原文地址:https://www.cnblogs.com/shadow135211/p/5219346.html
Copyright © 2020-2023  润新知