CPU是英文Central Processing Unit(中央处理器)的缩写,相当于计算机的大脑,它的内部由数百万至数亿个晶管体构成。CPU所负责的就是解释和运行最终转换成机器语言的程序内容。
1、了解CPU的内部结构
CPU和内存是由许多晶体管组成的电子部件,通常称为IC。
CPU的内部由寄存器、控制器、运算器和时钟四个部分组成,各部分之间由电流信号相互连通。程序员需要理解CPU是如何运行的,特别是要弄清楚负责保存指令和数据的寄存器的机制。
寄存器可以用来暂存指令、数据等处理对象,可以将其看做内存的一种。根据种类的不同,一个CPU内部会有20~100个寄存器。
控制器负责把内存上的指令、数据等读入寄存器,并根据数据指令的执行结果来控制整个计算机。
运算器负责运算从内存读入寄存器的数据。
时钟负责发出CPU开始计时大的时钟信号。不过,也有些计算机的时钟位于CPU的外部。
内存指的是计算机的主存储器,简称主存。
主存通过控制芯片等与CPU相连,主要负责存储指令和数据。
主存由可读写的元素构成,每个字节都带有一个地址编号。CPU可以通过该地址读取主存中的指令和数据,当然也可以写入数据。
主存中存储的指令和数据会随着计算机的关机而自动清除。
2、CPU是寄存器的集合体
在CPU的四个构成中,程序员只需了解寄存器即可,因为程序是把寄存器作为对象来描述的。
CPU处理程序的大致即,使用高级语言编写的程序会在编译后转化成机器语言,然后通过CPU内部的寄存器来处理。
3、程序是如何按照流程来运行的
地址0100是程序运行的开始位置。Windows等系统把程序从硬盘复制到内存后,会将程序计数器(CPU寄存器的一种)设定为0100,然后程旭便开始运行。CPU每执行一个指令,程序计数器的值就会自动加1,然后,CPU的控制器就会参照程序计数器的数值,从内存中读取命令并执行。程序计数器决定着程序的流程。
4、条件分支和循环机制
程序的流程分为顺序执行、条件分支和循环三种
顺序执行是指按照地址内容的顺序执行命令,即每单执行一个指令程序计数器的值就自动加1。
条件分支是指根据条件执行任意地址的指令。
循环是指重复执行同一个地址的指令。
若程序中存在条件分支和循环,机器语言的指令就可以将程序计数器的值设定为任意地址(不是+1)。这样一来,程序便可以返回到上一个地址来重复执行同一个指令,或者跳转到任意地址。
条件分支和循环中使用的跳转指令,会参照当前执行的运算结果来判断是否跳转。
5、函数的调用机制
函数的调用处理是通过程序计数器的值设定成函数的存储地址来实现的。这和条件分支、循环的机制有所不同,因为单纯的跳转指令无法实现函数的调用。函数的调用需要实现函数内部的处理后,处理流程再返回到函数调用点(函数调用指令的下一个地址)。
在编译高级语言的程序后,函数调用的处理会转换成call指令,函数结束的处理会转换成return指令。
6、机器语言指令的主要类型和功能
数据转送指令:寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作;
运算指令:用累加寄存器执行算术运算、逻辑运算、比较运算和移位运算;
跳转指令:实现条件分支、循环、强制跳转等;
call/return指令:函数的调用/返回调用前的地址。