程序运行的基本原理

来源:互联网 发布:潍坊全影网络是传销吗 编辑:程序博客网 时间:2024/04/30 21:41

程序是一种相对于计算电路的一种升维或者说抽象,不需要在具体的运算中重新组合各种基本的电路,而是通过以电信号表示的命令来控制电脑来运行,通过更改命令的执行顺序来改变计算机的具体功能。这就是冯诺依曼存储程序式体系:控制器,运算器,存储器,输入设备,输出设备。具体的工作流程是1在控制器指挥下,从存储器上取出指令;2分析指令,得到计算命令和待操作的数;3从存储器上取出待计算的数放入运算器;4运算器计算结果;5输出到存储器或输出设备。

因此存储器是关键。存储器分为:寄存器(CPU内部,用于存放待操作数和结果);高速缓存(通常在CPU内部,用做数据缓冲区);内存;外存。

接下来是具体的命令执行,这需要预先定义好CPU能执行的命令,即CPU的指令集,用来计算和控制计算机系统的一套指令的集合,典型的有Intel X86指令集和ARM指令集。具体的指令以二进制码表示,包含一个或多个字节,也包含指令码(具体命令)和操作数(要操作的数或地址)。在具体的执行中,把宏观层次的命令转换为满足指令集要求的二进制代码,然后才能在计算机上运行;参见CPU的具体组成成分运算器 ALU和寄存器和控制器的工作流程。

最后程序的执行就是在以上基础进行的,一开始使用机器语言的时候,具体的命令形式是1001010101010011 00011110这样的。这个虽然足够底层能够直接与计算机进行交互,但不是一般人能够搞得定的,于是就有更高层次的抽象,汇编语言,变成add 0 1这种相对来说比较友好的语言;接着就是高级语言了,更加抽象,但接近我们一般人的思维习惯,如d = a*b+c;当然,这是前人的工作成果,他们把很多的细节封装起来,我们这些后人之间调用就行,不用管其具体的转换即具体的编译,不然一句程序有可能转换为多句指令,而且其执行的次序和次数之类的细节,各种内存地址和数据的调用足够使人发疯。

好,接下来就是具体的程序语言的学习了。

0 0