我在维基上读到了关于维基的文章,我看到了这一段:
一些支持字节码作为其ISA的虚拟机,如Smalltalk、Java虚拟机和Microsoft的公共语言运行时,将此由translatin实现--字节码用于将常用的代码路径转换为本机代码。此外,这些虚拟机通过解释执行较少使用的代码路径(请参阅:即时编译)。Transmeta以这种方式在VLIW处理器上实现了x86指令集。
这到底是什么意思?是bytecodes are ISA for JVM和JVM in-转折支持ISA的处理器.
发布于 2014-01-17 20:40:26
是的,正如你所猜测的那样。JVM/JRE使用Java字节码作为指令集,每个JVM都需要在本地/本地硬件(以及本地指令集)上编译并运行。维基百科的图表很好地说明了这一点,我认为:

JRE/JVM需要针对其运行的特定硬件进行编译,尽管JVM本身的Java字节码定义和解释保持不变。正如您所指出的,Java字节码可以看作是Java源代码和本地机器/二进制代码之间的一种抽象层。它确实允许在典型的Java程序员之间分离关注点,并且需要了解任何特定于机器的信息,因为几乎所有这些都是由JVM/JRE处理的。
发布于 2014-01-17 20:40:30
字节码是JVM的ISA吗?
字节码是JVM的指令。
并支持处理器的ISA。
但是真正的处理器才是真正的工作,所以JVM将它们转换成本机指令。首先,它将简单的、但执行速度较慢的代码交叉起来,一旦对代码进行了优化(这很昂贵),代码就会作为原始的本机指令快速运行。
发布于 2014-01-17 21:25:27
JVM基本上模拟Java程序的CPU。正如CPU在硬件上本地执行组合操作码一样,JVM执行Java操作码,但严格地在软件上执行。
这到底是什么意思?字节码是针对JVM和JVM在转的处理器ISA支持的ISA。
ISA (指令集体系结构)指定了适用于编写直接在CPU上运行的低级软件的一整套规则和技术。它包括一组操作码,它们是不可组合的直接CPU命令。JVM识别它自己的一组字节码(即8位操作码),这些字节码指示JVM执行解释器原语指令。因此,是的,字节码规范构成JVM的ISA的一部分。
JVM一个一个地遍历操作码列表,使用自己的内存来模拟硬件组件(例如堆栈、寄存器、主内存),并使用原始算法和逻辑操作来模拟ALU。这些模拟组件也构成JVM的ISA。这是任何翻译的基本结构,无论是给予还是接受。然而,为了改进Java应用程序的运行时,JVM将“热点”编译成机器特定的代码,以获得最佳性能。热点是代码中经常运行的部分。这就是所谓的“即时”编译,可以在程序执行时完成。这种技术使Java的性能更接近编译语言的性能。JIT也在.NET框架中使用。
每个操作系统都有自己的JVM实现,这也可能因设备的ISA而有所不同。例如,可以为Linux、Linux86或Windowsx86编写JVM。JVM本身可能是用与平台无关的语言编写的,比如C,但是它的JIT编译器必须支持对设备指令集的编译。
https://stackoverflow.com/questions/21195340
复制相似问题