计算机组成原理程序员今日看点

计算机组成原理学习(二)

2017-01-10  本文已影响353人  虾笑勇

前言
本次计算机组成原理学习主要分为两块

我们的世界是多元多义的,而计算机的世界永远是枯燥的,除了0就是1,为了能够勾画出我们能够理解的东西,我们定义了单位字节,但是这些又不能被大多数人认知,因为我们不能写一篇文章,然后满篇都是0和1吧,所以后来CPU的架构师们设计了很多机器指令,这些指令刚开始是一些十六进制的机器码,而这些指令的集合就是CPU指令集,随着科技的发展,这样的设计已经不能满足需求,为了让更多的人能够参与进来,顶层设计师们设计了一种最接近CPU指令集的低级语言,我们称它为汇编语言,汇编的诞生,让计算机有了质的发展。
  汇编语言已经能够让很多人编写自己的软件,但是这样还不够,因为不同的CPU生产厂家指令集不一致,出现了一个问题就是一次编写不能重复使用,不同的CPU需要一定的修改程序的额外工作,后来就提出了高级语言,CPU厂家根据ISA(工业标准规范架构)统一协定实现并支持汇编语言集合(其中有少些汇编语言功能会有所不同),这种汇编集合就是汇编指令集。

一、CPU指令集(机器语言)和汇编语言

汇编过程

注意:
1、汇编语言和机器语言的指令是一一对应的,汇编语言有三条指令,机器语言也有三条指令,汇编器就是做一个简单的替换工作
2、

二、32/64位CPU、操作系统、应用程序

注意:
该能力影响CPU的运算速度和内存寻址能力。位数更大的机器的运算速度和内存寻址能力更快和更大,比如,64位机有比32位机更快的运算速度,64位机支持比32机更大的内存。

CPU的位数与操作系统的位数间的关系 不同位数的CPU的指令集的指令长度是不同的。所以,理论上32位CPU上只能跑32位操作系统、64位CPU上只能跑64位操作系统。 但是为了实现”升级到64位硬件的同时保证之前购买的32位软件仍然能够运行”,所以主要厂商对CPU进行处理,使64位CPU能够运行32位操作系统。

2、64位操作系统能够运行32位软件,32软件不能运行在64位系统上。

三、程序运行原理

首先我们通过上面的学习,高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类,一种是编译型语言,例如C,C++,Java,另一种是解释型语言,例如Python、Ruby、MATLAB 、JavaScript。

注意:
关于Java语言到底是编译型还是解释型,这里不做讨论。

让我们拿一个简单的C程序如何在操作系统中运行作为例子,再细入的学习下整个运行全过程。首先C语言程序需要经过编译后才能运行。编译过程如下:预处理、编译、汇编和链接。

C语言编译全过程

注意:
1、链接的作用
  编译的最后一个阶段是链接,链接的作用是将程序代码与操作系统中自带的动态链接库和系统API进行关联。只有关联后程序才能运行。

如果你们想更细入的了解程序运行过程,那就要去深读《编译原理》。因本人知识有限,如果有错误,请指出,随时沟通交流,感谢。

上一篇 下一篇

猜你喜欢

热点阅读