字节码和机器码的区别
Posted 张驰Terry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节码和机器码的区别相关的知识,希望对你有一定的参考价值。
机器码
机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的 CPU 可直接解读的数据。
通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。
总结:机器码是电脑 CPU 直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写
字节码
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。
字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。
总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
工程上的应用
V8 引擎诞生的使命就是要在速度和内存回收上进行革命。javascriptCore 的架构是采用生成字节码的方式,然后执行字节码。Google 觉得JavaScriptCore 这套架构不行,生成字节码会浪费时间,不如直接生成机器码快。所以 V8 在前期的架构设计上是非常激进的,采用了直接编译成机器码的方式。后期的实践证明 Google 的这套架构速度是有改善,但是同时也造成了「内存消耗问题」
以上是关于字节码和机器码的区别的主要内容,如果未能解决你的问题,请参考以下文章
震惊!几道Python 理论面试题,Python面试题No18