CPU
CPU的作用就是解释和运行最终转换成机器语言的程序内容,CPU主要包括寄存器、运算器、控制器和时钟四个部分构成。程序启动后,根据时钟信号,控制器会从内存中读取指令和数据,通过对这些指令加以解释和运行,运算器就会对数据进行运算,控制器根据该运算结果来控制计算机;寄存器用于暂存指令和数据。
寄存器
- 寄存器中存储的内容既可以是指令也可以是数据,数据分为“用于运算的数值”和“表示内存地址的数据”两种,数据种类不同,存储该数据的寄存器也不同。
- 用于运算的数值放在累加寄存器中存储,表示内存地址的数值则放在基址寄存器和变址寄存器中存储。
- 常用的eax和ebp分别是累加寄存器和基址寄存器。
- 基址寄存器、变址寄存器和通用寄存器都不止一个,其他寄存器只有一个。
- 程序计数器
操作系统把程序从硬盘复制到内存后,会将程序计算器设定为0100,然后程序便开始运行。cpu每执行一个指令,程序计数器值加1(当执行的指令占据多个内存地址,增长与指令长度相应的数值),然后CPU控制器就会参照程序计数器的数值,从内存中读取命令并执行,程序计数器决定着程序的流程。
- 标志寄存器
cpu在进行运算时,标志寄存器的数值会根据运算结果(正数,负数,零)自动设定,程序中有时需要根据运算结果决定跳转执行指令,这时cpu就是参考标志寄存器的数值后进行判断的。
运算结果的正,零,负三种状态由标志寄存器的三个位表示,第一个字节位,第二个字节位,第三个字节位的值为1时,表示运算结果分别为正数,零和负数
程序中的比较指令就是在做减法运算,cpu根据结果的正负零来判断两个数值的大小
- 基址寄存器和变址寄存器
通过这两个寄存器可以对主存上特定的内存区域进行划分成一个区域,基址寄存器存储开始地址,变址寄存器存储相对于开始地址的相对地址,cpu则会把基址寄存器+变址寄存器的值解释为实际查看的内存地址。
- 条件分支、循环机制
程序流程分为顺序执行、条件分支和循环三种。顺序执行是指按照地址内容的顺序执行指令;条件分支指根据条件执行任意地址的指令;循环指重复执行同一地址的指令。顺序执行每执行一个指令程序计数器加1,条件分支和循环可能将程序计数器的值设定为任意地址(不是加1),这样程序就可以返回上一个地址来重复执行同一指令或跳转到任意地址。
- 函数调用机制
指令在执行过程中可能要调用另一个函数,也就是在执行调用函数指令后,程序计数器地址要设定成调用函数的起始地址,函数调用完成后要设定成调用函数指令的下一条指令地址,这个过程cpu是如何做到的呢?
这里需要用到call指令和return指令,函数调用调用的是call指令,也就是在将函数入口地址设定到程序计数器之前,call指令会把调用函数后的下一条指令地址存储在名为栈的主存中,函数执行完后,再通过return指令把保存在栈中的地址设定到程序计数器中。
- cpu处理机制
上面的指令类型就是cpu执行中的主要指令,是不是觉得cpu处理流程很简单了。