对程序员来说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指令 函数的调用/返回调用前的地址
posted @ 2021-03-12 11:35  睿阳  阅读(247)  评论(0编辑  收藏  举报