2

我知道几种解释型编程语言(PHP、Python、Java、Smalltalk)都在使用字节码作为执行代码的中间步骤。

不同语言的解释器生成的字节码形式是否有区别,就像不同机器的汇编操作码之间的区别一样?

另外,可以肯定的是,字节码只能在解释语言中使用,对吧?

4

2 回答 2

4

字节码是虚拟机执行指令的通用词,就像机器语言是真实处理器执行指令的通用术语一样。正如有许多不同的机器指令集一样,也有许多不同的字节码指令集。有些,如 Java 字节码,是平台的文档化部分。根据定义,所有 Java 虚拟机都执行完全相同的字节码。其他只是一个实现细节,并因版本而异。

回答你的最后一个问题:不,那是不正确的。Java 不是解释型语言。它是即时编译的。C# 类似。字节码可以是许多不同架构的一部分。

于 2013-11-23T17:36:58.550 回答
1

正如 Ernest 提到的,它是来自不同语言的供应商依赖的字节码实现。虽然已经尝试标准化字节码。查看 Microsoft CIL的解决方案

值得一提的是LLVM编译器,它成为不同字节码的粘合剂,为任何 CPU 指令集提供优化编译。

于 2013-11-23T17:41:13.243 回答