汇编语言 高级语言

  1. 一些术语
    机器码:machine code == 机器指令:machine instruction == 指令instruction

汇编语言:assembly

汇编器:assembler

高级语言:high-level language

编译器:compiler

  1. 编译器和汇编器的区别
    机器码

机器码即一条条的指令,可以被CPU处理器所识别的语言,CPU可以执行对应的指令,实现相应的功能。

不论是编译器还是汇编器,最终生成的都是机器码。

汇编语言

汇编器产生机器码,指的是将汇编语言已编译成机器码。

汇编语言中的每一个命令,一般情况下,都对应着一个,可以被CPU所识别的,机器码中的,机器指令。

高级语言

编译器,将高级语言编译成机器码。

绝大多数的高级语言,比如C,C++,Java等,的命令,即高级语言写出来的语句,和机器语言都没有一一对应的关系,一般来说,一条高级语言的语句或几条语句所组成的代码段,都对应着(更多)多条机器码。

硬件抽象层

硬件抽象层是一种技术,将底层硬件细节抽象隐藏出来,以方便上层软件编程。

汇编语言中,一般不存在硬件抽象层的概念,因为其本身语句,就接近于硬件指令,是用来直接操作硬件的。

而被编译器所编译后的高级语言,会很大程度地涉及到硬件抽象层。

汇编器的优势和劣势

由于汇编语言本身和指令就基本是一一对应的关系,所以用汇编器将汇编代码编译所生成的可执行代码(指令)的效率,比高级语言被编译器最终编译生成的可执行代码的效率,要高很多。

所以,当程序的性能作为最重要的考量的时候,比如在图像处理方面,或者是硬件资源有限的情况下,倾向于用汇编语言,以实现代码运行更高效,占用资源更少的效果。

汇编语言的劣势是,不容易使用,难学,难用。

编译器的优势和劣势

在绝大多说情况下,在这点很小的性能的提升方面的优势,不足够补偿其在难学难用方面的劣势,此时,

往往使用高级语言,比如C,C++,Java等。高级语言,更容易使用,更容易用来描述更加复杂的上层逻辑等。

  1. 总结
    汇编器 vs 编译器

    汇编器 编译器
    输入文件 汇编(源)代码 高级语言(C/C++/Java/…的源)代码
    输出文件 机器码(指令) 机器码(指令)
    是否有代码优化功能 一般没有(一般也不需要,因为只是涉及到将汇编代码直接转换/翻译为机器码) 一般都包含代码优化(优化代码,以提高运行效率)

汇编语言 vs 高级语言

汇编语言(不同CPU对应不同的自己的汇编语言和机器语言)    高级语言(C/C++/Java/…)

学习和使用的难易度 难 相对容易
和机器指令的一一对应程度 基本一一对应 一条高级语言往往对应着多条机器指令
代码执行效率 极高 相对汇编来说较低

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,424评论 8 114
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,382评论 2 35
  • 感觉最近几天好像在提前过周末,或者是休年假的节奏。其实,现在的我,相当于半个无业游民。自由职业的生活,于我,犹如落...
    知一如是阅读 184评论 0 1