标签:运行时 寄存器 编译器 读写 源代码 充电 重复 控制器 问题
一、cpu是如何识别010101二进制机器码的?
cpu都会有预定义的指令集,每一个指令代表了一种操作;不同cpu可能有不同的指令集;当cpu运行一个程序时,会顺序地执行程序的指令。
首先控制器会读取一条指令,当cpu执行完后,控制器会生成下一条指令,不断执行;
二、编程语言的诞生和发展
1、因为计算机智能识别二进制指令,因此最开始的程序是人工输入,然后采用纸袋打孔输入,都是直接对计算机输入二进制指令;
2、由于可读性差,不易维护等诸多因素,采用了汇编语言,即用符号来代表二进制指令,代码完成后需要用汇编工具将源代码转换成二进制可执行程序;
3、前面说到,不同cpu可能有不同的指令集,因此针对不同的cpu,需要写出不同的汇编代码,浪费人力物力;因此高级语言诞生了,c,c++等;
代码写好后,需要编译器进行编译,最终编译成二进制的可执行程序;
编译过程如下:
源代码->预处理->编译->汇编->连接其他库->可执行文件
而像c#,java等,是先编译成中间语言,然后当程序运行时,再用编译器将其编译成二进制可执行文件
三、存储器
cup执行的指令从哪里来呢?其实就是从存储器来的。一般存储器分为以下几种:
寄存器,缓存(cache),内存,外存;读写速度为:寄存器>缓存>内存>外存
寄存器:一般寄存器的速度和cpu差不多,由于寄存器内晶体管较多,如果寄存器太多,cpu的体积会很大
缓存:缓存本身速度和cpu差不多,但是缓存存在命中问题,若找不到则会向下一级寻找,因此速度慢了;现在一般都有2到3级缓存了
内存:内存有静态(SRAM)和动态(DRAM)区分,静态速度>动态速度,动态内存存在电容电量衰减,因此会不断充电,以保持数据存在
外存:闪存,固态硬盘,机械硬盘等;断电后数据不消失,但是相对内存速度,那是非常慢的
总结:计算机运行过程总体如下:
控制器从存储器读取指令,cpu的运算器执行指令并输出,控制器再读取指令。。。不断重复
标签:运行时 寄存器 编译器 读写 源代码 充电 重复 控制器 问题
原文地址:http://www.cnblogs.com/flxds/p/6341102.html