【问题标题】:Bytecode differences in different programming languages不同编程语言的字节码差异
【发布时间】:2013-11-23 17:31:33
【问题描述】:

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

不同语言的解释器生成的字节码形式有区别吗,不同机器的汇编操作码有区别吗?

另外,为了确定,字节码只能用于解释语言,对吧?

【问题讨论】:

    标签: jvm bytecode jit opcode pyc


    【解决方案1】:

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

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

    【讨论】:

    • 那么,实际的答案是肯定的? Java字节码与Python字节码不同?这些流行语言之间的差异是否显着?
    • 是的,它们完全不同。几乎没有相似之处。
    【解决方案2】:

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

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

    【讨论】:

    • CIL 不只是 .NET 特定的字节码吗?与 Java 的 JIT 字节码相比,它做了哪些标准化尝试?
    • 是的,它是低级 .NET,也可以看看这个线程 stackoverflow.com/questions/95163/…
    猜你喜欢
    • 2019-01-20
    • 2012-08-11
    • 2021-01-15
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2020-10-16
    • 2020-05-19
    相关资源
    最近更新 更多