在JVM方面,Oolong是什么?

问题描述 投票:3回答:3

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

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

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

java jvm oolong
3个回答
4
投票

Oolong是JVM的汇编语言。

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

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

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

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

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


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


0
投票

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


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.