在JVM方面,Oolong是什么?

时间:2012-06-21 06:01:53

标签: java jvm oolong

我正在阅读Joshua Engel撰写的“Java虚拟机编程”一书,其中作者提供了“JVM汇编语言”,称为Oolong。

据我所知,这是编译成java字节码的语言,它与原始的java字节码非常相似(那里使用了大量的字节码操作码)。如果是这样,为什么它被称为汇编语言?那是因为它是低级语言,看起来像字节码吗?

另一个问题是关于Jasmin。正如维基百科所说,它是“一个免费的开源汇编程序,可以使用Java虚拟机指令集从人类可读的汇编程序语法创建类文件”。 Jasmin文件的语法(也有.j扩展名)看起来像Oolong的语法。它在那里使用吗?

3 个答案:

答案 0 :(得分:4)

Oolong是JVM的汇编语言。

  

...为什么叫汇编语言?

你最好查看“汇编语言”在(例如)Wikipedia中的含义。它本质上是一种语言,它在“语句”和目标机器的机器指令之间具有直接的一对一映射 1 。如果您将JVM视为目标计算机,则OOlong会匹配此描述。 (乌龙语句和JVM字节码指令之间存在一对一的映射。)

  

Jasmin文件的语法(也有.j扩展名)看起来像Oolong的语法。它在那里使用吗?

我看到有消息称Oolong的语法是“基于Jasmin”,但我找不到任何详细描述语法的独立文档。

如果您有兴趣查看乌龙,这个SO问题详细说明了从哪里下载:


1 - 我过于简单了。某些汇编语言支持“宏”,其中单个源语句可以映射到多个目标指令。阅读维基百科参考资料。

答案 1 :(得分:0)

它使用堆栈,堆栈帧,并具有与实际汇编语言对应的字节码。它还有更高级别的指令,可以从内存中检索字段,但不能直接检索。你必须使用getfield,putfield,invokespecial等。由于JVM不能在真正的硬件环境中运行(比如Unix内核),它不会做任何真正的操作系统像制作流程那样繁重的工作,担心时间片和服务中断,与设备驱动程序通信以及打开和关闭。我不得不说JVM是Java和本机操作系统之间的中间件。这正是他们所说的......虚拟机。

答案 2 :(得分:-1)

乌龙茶是中国茶,名字并不重要。 请记住,Java语言是由java编译器编译的。 Java字节码不是汇编语言,但您可以将其视为(JVM)Java虚拟机的汇编语言。