zoukankan      html  css  js  c++  java
  • 对程序员来说CPU是什么

    问题

    1. 程序是什么?

      指示计算机每一步动作的一组指令。

    2. 程序是由什么组成的?

      指令和数据。

    3. 什么是机器语言?

      CPU可以直接识别并使用的语言。

    4. 正在运行的程序存储在什么位置?

      内存,硬盘和磁盘等媒介上保存的程序被复制到内存后才能运行。

    5. 什么是内存地址?

      用来表示指令和数据存储位置的数值。

    6. 计算机的构成元件中,负责程序的解释和运行的是哪个?

      CPU

    CPU的组成

    • 寄存器:用来暂存指令、数据等处理对象
    • 控制器:负责把内存上的指令、数据等读入寄存器、并根据指令的执行结果来控制整个计算机
    • 运算器:负责运算从内存读入寄存器的数据
    • 时钟:负责发出CPU开始计时的时钟信号

    内存指的是计算机的主存储器main memory,简称主存。主存通过控制芯片等与CPU相连,主要负责存储指令和数据。但主存中存储的指令和数据会随着计算机的关机而自动清除。

    汇编语言assembly按采用助记符memonic来编写程序,汇编语言和机器语言基本上是一一对应的。通常我们将汇编语言转换为机器语言的过程称为汇编,反过来称为反汇编。

    在程序员看来,CPU是寄存器的集合体

    种类 功能
    累加寄存器(accumulator register) 存储执行运算的数据和运算后的数据
    标志寄存器(flagregister) 存储运算处理后的CPU的状态
    程序计数器(program counter) 存储下一条指令所在内存的地址
    基址寄存器(baseregister) 存储数据内存的起始地址
    变址寄存器(indexregister) 存储基址寄存器的相对地址
    通用寄存器(general purpose register) 存储任意数据
    指令寄存器(instructionregister) 存储指令。CPU内部使用,程序员无法通过程序对该寄存器进行读写操作
    栈寄存器(stackregister) 存储栈区域的起始地址

    其中,程序计数器、累加寄存器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个。

    条件分支和循环机制

    条件分支和循环中使用的跳转指令,会参照当前执行的运算结果来判断是否跳转。

    而CPU在进行运算时,标志寄存器的数值会根据运算结果自动设定。

    函数的调用机制

    函数调用使用的是call指令,call指令会把调用函数后要执行的指令地址存储在名为栈的主存内;函数处理完毕后,再通过函数的出口来执行return指令,return命令的功能是把保存在栈中的地址设定到程序计数器中。

    通过地址和索引实现数组

    通过基址寄存器和变址寄存器,可以对主内存上特定的内存区域进行划分,从而实现类似于数组的操作。

    CPU会把基址寄存器+变址寄存器的值解释为实际查看的内存地址。变址寄存器的值就相当于高级编程语言程序中数组的索引功能。

    机器语言指令的主要类型和功能

    类型 功能
    数据转送指令 寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作
    运算指令 用累加寄存器执行算术运算、逻辑运算、比较运算和移位运算
    跳转指令 实现条件分支、循环、强制跳转等
    call/return指令 函数的调用/返回调用前的地址
  • 相关阅读:
    redis基本介绍搭建篇
    Percona XtraDB Cluster集群
    path模块
    vue相关
    Vue首页加载过慢 解决方案
    从用户输入url到页面最后呈现 发生了些什么?
    cookie
    javascript中怎么判断对象{}为空
    jquery之stop()的用法
    跨域
  • 原文地址:https://www.cnblogs.com/fr-ruiyang/p/14522873.html
Copyright © 2011-2022 走看看