1.CPU的组成部分
CPU是英文Central Processing Unit(中央处理器)的缩写,相当于计算机的单脑,是由许多晶体管组成的电子部件,这种部件通常也被成为集成电路。CPU由寄存器、控制器、运算器以及时钟组成,这四部分的作用分别为:
CPU的组成部分 | 作用 |
寄存器 | 暂时存储指令、数据等处理对象 |
控制器 | 将内存上的指令、数据等读入寄存器,并根据指令的执行结果控制计算机 |
运算器 | 负责运算从内存读入寄存器的数据 |
时钟 | 负责发出CPU开始计时的时钟信号 |
2.CPU是寄存器的集合体
CPU的四个组成部分对于程序员来说,只需要重点关注寄存器即可,因为程序是把寄存器作为对象来描述的。不同CPU的的寄存器的数量、种类以及寄存器存储的数值范围都是不同的。寄存器中主要存储指令与数据,数据可以是“用于运算的数据”也可以是“表示内存地址的数值”。一般可以把寄存器分为八大类,其分别的作用如下表,其中标红的寄存器都只有一个,而其他的寄存器都不止一个。
种类 | 功能 |
累加寄存器 | 存储执行运算和运算后的数据 |
标志寄存器 | 存储运算处理后CPU的状态 |
程序计数器 | 存储下一条指令所在内存的地址 |
指令寄存器 | 存储指令。CPU内部使用,程序员无法通过程序操作该寄存器 |
栈寄存器 | 存储栈区域的起始地址 |
基址寄存器 | 存储数据内存的起始地址 |
变址寄存器 | 存储基址寄存器的相对地址 |
通用寄存器 | 存储任意数据 |
3.条件分支和循环机制
程序的流程分为顺序执行、条件分支和循环三种。顺序执行是指按照地址内容的顺序执行指令;条件分支是指根据条件执行任意地址的指令;循环是指重复执行同一地址的指令。如下图所示为执行条件分支的程序示例。
从图中我们可以看到,当程序计数器进行到0102时,遇到条件判断的指令,然后根据条件跳转到0104的内存上。条件分支在进行跳转指令前会进行比较运算,CPU执行比较运算的过程是进行减法运算,然后计算结果保存在标志寄存器中。至于是否执行指令,CPU在参考标志寄存器的数值以及结合判断条件做出判断。
4.函数的调用机制
函数的调用与条件分支不同,单纯地跳转指令无法实现函数的调用。机器语言中的call与return指令可以完成这函数的调用。在将函数的入口地址设定在程序计数器之前,call指令会将调用函数后下一步即将要执行的指令地址存储在名为栈的主存中。函数处理完毕后,再通过函数的出口来通过return的命令将保存在栈中即将要执行的指令的地址设定到程序计数器。
5.CPU的处理能力
CPU所执行的是高级编程语言编译过后的机器语言,其所能执行的机器语言指令大致有以下几类:
类型 | 作用 |
数据传送指令 | 寄存器与内存,内存与内存,寄存器与外围设备之间的数据读写操作 |
运算指令 | 通过累加寄存器进行算术、逻辑、比较和移位运算 |
跳转指令 | 实现条件分支、循环以及强制跳转等 |
call/return指令 | 函数的调用 |