机器语言、汇编语言和高级语言之间的关系

时间:2022-08-12 01:20:15

        看了一篇讲解高级语言、汇编语言和机器语言的博客,感觉很受益,在这里简单总结一下。

1. 机器语言

        计算机执行的二进制命令,都是0和1表示的。

2. 汇编语言

        具有一定意义的文字命令,与机器语言一一对应。汇编语言可以通过汇编得到机器语言,机器语言可以通过反汇编得到汇编语言。汇编过程还包括变量内存管理,即经过汇编之后所有的变量和函数都变成了地址,而常量也变成了对应的值。

但是汇编语言还是不够直观,一个简单的动作需要大量的语句来描述,因此又有了高级语言。

3. 高级语言

        更简单,符合人们的习惯,也更容易理解和修改。高级语言经过编译器编译之后可以得到目标程序。

        编译器的作用就是把高级语言的源代码转换成对应平台的目标代码。高级语言书写比较简单,但是翻译起来比较复杂,同样的高级语言语句可以有不同的机器语言实现方法。因此同一段高级语言经过不同的编译器编译之后会得到不同的目标程序,就是说高级语言与汇编/机器语言之间不再是一一对应的关系了。上面说到汇编之后源代码中的变量都变成了地址,所以用可执行文件(如exe等)进行反汇编之后得到的也是一堆地址,几乎不可能得到源代码。

        另外,关于跨平台,也是针对源代码而言的。一段源代码转移到另一个平台上要经过重新编译、重新获得目标程序才能运行,前提是源代码没有依赖于平台的特性。不过即使源代码对平台有依赖性,重新编译后也可以进行一定改动再使用。


        参考博客:http://hi.baidu.com/olid_stone/item/1f44b80bc5f531036c904880,原文说的比较详细,本文仅是一个简单的小结而已。