字节码和机器码的区别

Posted 张驰Terry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节码和机器码的区别相关的知识,希望对你有一定的参考价值。

机器码

机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的 CPU 可直接解读的数据。
通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。

总结:机器码是电脑 CPU 直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写

字节码

字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。
字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。

总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

工程上的应用

V8 引擎诞生的使命就是要在速度和内存回收上进行革命。javascriptCore 的架构是采用生成字节码的方式,然后执行字节码。Google 觉得JavaScriptCore 这套架构不行,生成字节码会浪费时间,不如直接生成机器码快。所以 V8 在前期的架构设计上是非常激进的,采用了直接编译成机器码的方式。后期的实践证明 Google 的这套架构速度是有改善,但是同时也造成了「内存消耗问题」

以上是关于字节码和机器码的区别的主要内容,如果未能解决你的问题,请参考以下文章

1.JVM基础知识

JVM进阶之路, 不然又要被面试官吊打了

震惊!几道Python 理论面试题,Python面试题No18

震惊!几道Python 理论面试题,Python面试题No18

什么是机器码

机器码和字节码的不同