参考链接:http://c.biancheng.net/view/vip_2090.html
程序是保存在硬盘中的,要想程序运行,必须把载入内存才行,cpu只能从内存中读取数据和指令,当数据处理完后,cpu再将数据传入内存,最后在由内存存入硬盘中,可以说计算机中的一切操做都以内存为枢纽
CPU直接从内存中读取数据,处理完成后将结果再写入内存。
cpu的简单结构
- 运算器: 计算机的大脑 负责运算工作,每种运算有对应的电路支持,速度很快
- 寄存器:cpu内部非常小,但速度非常快的存储部件。容量有限,32位cpu 每个寄存器可以存放32位的数据(4字节),64位cpu 可以存放 64位数据。
常用寄存器:EIP 存放下一条指令的地址
CR3 保存当前进程页目录的物理地址 切换进程 CR3内容改变
EBP/ESP 指向栈的底部/顶部
- 缓存 :cpu的运行速度是内存读取速度的数量级倍,如果每次都从内存中读取数据,会造成cpu长时间处于等待状态。因此设置缓存,对于频繁使用的数据将其放入缓存,直接从缓存读取。(缓存大小有限,不是所有数据都从缓存读取)、
cpu指令
使cpu工作的指令,如add用于加法,sub用于除法运算,这些命令统称为cpu的指令集。我们使用的c语言最终也会被编译成一条条的cpu指令。例如
int a = 0X14, b = 0XAE, c;
c = a + b;
其对应的cpu指令为
mov ptr[a], 0X14 把0X14 存储到a的内存中
mov ptr[b], 0XAE
mov eax, ptr[a] 把a移动到寄存器 eax中
add eax, ptr[b] 把b的值加到寄存器eax中
mov ptr[c], eax 把寄存器中的值存储到c中