机器语言是如何在计算机内部被执行的呢?

机器语言是如何在计算机内部被执行的呢?能否说明一下原理。谢谢!... 机器语言是如何在计算机内部被执行的呢?能否说明一下原理。谢谢! 展开
 我来答
三天起个名
推荐于2016-03-06 · TA获得超过952个赞
知道大有可为答主
回答量:1445
采纳率:0%
帮助的人:1693万
展开全部
你该看看这个:

一、引言
在计算机科学中,编程语言是用来编写可被计算机运行的一系列指令(计算机程序)的人工语言。与英语等自然语言相类似,编程语言具有词汇、语法和句法。然而,自然语言不适合计算机编程,因为它们能引起歧义,也就是说它们的词汇和语法结构可以用多种方式进行解释。用于计算编程的语言必须具有简单的逻辑结构,而且它们的语法、拼写和标点符号的规则必须精确。
编程语言在复杂性和通用程度上大相径庭。有些编程语言是为了处理特定类型的计算问题或为了用于特定型号的计算机系统而编写的。例如,FORTRAN和COBOL等编程语言是为解决某些普遍的编程问题类型而编写的——FORTRAN为了科学领域的应用,而COBOL为了商业领域的应用。尽管这些语言旨在处理特定类型的计算机问题,但是它们具有很高的可移植性,也就是说它们可以用来为多种类型的计算机编程。其他的语言,譬如机器语言,是为一种特定型号的计算机系统,甚至是一台特定的计算机,在某些研究领域使用而编写的。最常用的编程语言具有很高的可移植性,可以用于有效地解决不同类型的计算问题。像C、PASCAL和BASIC这样的语言就属于这一范畴。
二、语言类型
编程语言可划分为低级语言和高级语言。低级编程语言或机器语言,是编程语言中最基础的类型,能被计算机直接理解。机器语言的区别取决于制造商和计算机的型号。高级语言是在计算机能够理解和处理之前必须首先翻译成机器语言的编程语言。C、C++、PASCAL和FORTRAN都是高级语言的例子。汇编语言是中级语言,非常接近于机器语言,没有其他高级语言所表现出的语言复杂程度,但仍然得翻译成机器语言。
1、机器语言
在机器语言中,指令被写成计算机能够直接理解的被称之为比特的1和0的序列。机器语言中的一条指令通常告诉计算机4件事情:(1)到计算机主存储器(随机访问存储器)的哪个位置去找一或两个数字或者简单的数据段;(2)要执行的一个简单操作,例如将两个数字加起来;(3)将这个简单操作的结果存放在主存储器的什么位置;以及(4)到哪里找要执行的下一条指令。虽然所有的可执行程序最终都是以机器语言的形式被计算机读取,但是它们并非都是用机器语言编写的。直接用机器语言编程极端困难,因为指令是1和0的序列。机器语言中的一条典型的指令可能是10010 1100 1011,意思是将存储寄存器A的内容加到存储寄存器B的内容中。
2、高级语言
高级语言是利用人类语言中的词和句法的一套相对复杂的语句。它们比汇编语言和机器语言更类似于正常的人类语言,因此用来编写复杂的程序更容易。这些编程语言允许更快地开发更庞大和更复杂的程序。然而,在计算机能够理解之前,高级语言必须被称之为编译器的另外一种程序翻译成机器语言。因为这个原因,与用汇编语言编写的程序比较起来,用高级语言编写的程序可能运行的时间更长,占用的内存更多。
3、汇编语言
计算机编程人员使用汇编语言使机器语言程序编写起来更简单一些。在汇编语言中,每条语句大致对应一条机器语言指令。汇编语言的语句是借助易于记忆的命令编写的。在典型的汇编语言的语句中,把存储寄存器A的内容加到存储寄存器B的内容中这一命令,可以写成ADD B, A。汇编语言与机器语言具有某些共同特征。例如,对特定的比特进行操作,用汇编语言和机器语言都是可行的。当尽量减少程序的运行时间很重要时,程序员就使用汇编语言,因为从汇编语言到机器语言的翻译相对简单。当计算机的某个部分必须被直接控制时,如监视器上的单个点或者流向打印机的单个字符,这时也使用汇编语言。
三、高级语言的分类
高级语言通常分为面向过程的、函数式的、面向对象的或逻辑的语言。当今最常见的高级语言是面向过程的语言。在这种语言中,执行某个完整功能的一个或多个相关的语句块组成一个程序模块或过程,而且被给予诸如“过程A”的名称。如果在程序的其他地方需要同样的操作序列,可以使用一个简单的语句调回这个过程。实质上,一个过程就是一个小型程序。一个大程序可以通过将执行不同任务的过程组合在一起而构成。过程语言使程序变得比较短,而且更易于被计算机读取,但是要求程序员将每个过程都设计得足够通用,能用于不同的情况。
函数式语言像对待数学函数一样对待过程,并允许像处理程序中的任何其他数据一样处理它们。这就使程序构造在更高、更严密的水平上得以实现。函数式语言也允许变量——在程序运行过程中可以被用户指定和更改的数据符号——只被赋值一次。这样,通过减少对语句执行的确切顺序给予关注的必要性,就简化了编程,因为一个变量没有必要每次在一个程序语句中用到,都重新定义或重新赋值。函数式语言的许多观点已经成为许多现代过程语言的关键部分。
面向对象的语言是函数式语言的发展结果。在面向对象的语言中,用来编写程序的代码和程序处理的数据,组合成叫做对象的单元。对象进一步组合成类,而类则定义对象必须具有的属性。类的一个简单例子就是书这个类。这个类中的对象可能是小说和短篇小说。对象还有某些与其相关的功能,称为方法。计算机通过使用对象的某种方法来使用这个对象。方法对对象中的数据执行某个操作,然后将值返回给计算机。对象的类也可更进一步组合成层,而在层中一个类的对象可继承另一个类的方法。面向对象的语言中所提供的这种结构,使面向对象的语言对于复杂的编程任务非常有用。
逻辑语言将逻辑用作其数学基础。一个逻辑程序由一系列的事实与“如果……则”规则组成,来具体说明一系列事实如何可以从其他实事中推断出来,例如:
如果X语句为真,则Y语句为假。
在这样一个程序的执行过程中,一条输入语句可以按照逻辑从程序中的其他语句推断出来。许多人工智能程序使用这种语言编写。
四、语言的结构与成分
编程语言使用特定类型的语句或指令,来给程序提供功能结构。程序中的一条语句是表达一个简单意思的基本句子,其目的是给计算机一条基本指令。语句对允许的数据类型、数据如何处理以及过程和函数的工作方式进行定义。程序员利用语句来操作编程语言的常见成分,如变量和宏(程序中的小型程序)。
数据声明语句给予称为变量的程序元素以名称和属性。变量在程序中可以赋予不同的值。变量可以具有的属性被称作类型,它们包括:变量中可能存储什么样的值,值中使用何种程度的数值精度,以及一个变量可以如何以有组织结构的方式——如以表或数组的形式——代表一组比较简单的值等等。在许多编程语言中,一种关键的数据类型是指示字。指示字变量本身没有值;相反,它们含有计算机可以用来查找某个其他变量的信息——也就是说,它们指向另一个变量。
表达式是语句的一段,描述要对一些程序变量执行的一系列运算,如X+Y/Z,其中X、Y和Z为变量,运算方法为加和除。赋值语句给一个变量赋予得自某个表达式的值,而条件语句则指定要被测试、然后用于选择接下来应该执行的其他语句的表达式。
过程与函数语句将某些代码块定义为以后可在程序中返回的进程或函数。这些语句也规定程序员可以选择的变量与参数种类,以及当一个表达式使用过程或函数时代码将返回的值的类型。许多编程语言也容许叫做宏的小型翻译程序。宏把使用程序员定义的语言结构编写的代码段翻译成编程语言可以理解的语句。
五、历史
编程语言几乎可以追溯到20世纪40年代数字计算机发明之时。最早的汇编语言,随着商业计算机的推出,出现于20世纪50年代末。最早的过程语言是在20世纪50年代末到20世纪60年代初开发的:FORTRAN语言由约翰•巴克斯创造,然后由格雷斯•霍珀创造了COBOL语言。第一种函数式语言是LISP,由约翰•麦卡锡于20世纪50年代末编写。这3种语言今天仍在广泛使用,但经历过大量修改。
20世纪60年代末,出现了最早的面向对象的语言,如SIMULA语言。逻辑语言在20世纪70年代中期随着PROLOG语言的推出而变得广为人知;PROLOG语言是一种用于编写人工智能软件的语言。在20世纪70年代,过程语言继续发展,出现了ALGOL、BASIC、PASCAL、C和Ada等语言。SMALLTALK语言是一种具有高度影响力的面向对象的语言,它导致了面向对象的语言与过程语言在C++和更近期的JAVA语言中的结合。尽管纯粹的逻辑语言受欢迎的程度有所下降,但其变体以现代数据库所使用的关系语言——如结构化查询语言——的形式,变得至关重要。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式