11

在 .NET 平台中,可以直接使用通用中间语言编写程序并使用 IL 汇编程序 (ILASM) 编译源代码。

例如下面的代码是“Hello World”程序。

.assembly Hello {}
.assembly extern mscorlib {}
.method static void Main()
{
    .entrypoint
    .maxstack 1
    ldstr "Hello, world!"
    call void [mscorlib]System.Console::WriteLine(string)
    ret
}

是否可以像 .NET 一样直接使用 Java 字节码指令编写程序?

4

2 回答 2

7

你可以看看茉莉花。来自维基百科,

一些项目提供 Java 汇编器以支持手动编写 Java 字节码。汇编代码也可以由机器生成,例如由针对 Java 虚拟机的编译器生成。著名的 Java 汇编器包括:

Jasmin采用 Java 类的文本描述,使用 Java 虚拟机指令集以类似汇编的简单语法编写,并生成 Java 类文件。

Jamaica,Java 虚拟机的宏汇编语言。Java 语法用于类或接口定义。方法主体是使用字节码指令指定的。

注意:我个人没有使用过任何这些工具。

于 2012-12-30T16:15:28.350 回答
6

你可以使用茉莉花

 .class public HelloWorld
 .super java/lang/Object

 .method public static main([Ljava/lang/String;)V
 .limit stack 3
 .limit locals 1

  getstatic      java/lang/System/out Ljava/io/PrintStream;
  ldc            "Hello World."
  invokevirtual  java/io/PrintStream/println(Ljava/lang/String;)V

 return

.end method

你编译它使用:

java -jar jasmin.jar hello.j

你也可以参考这个

于 2012-12-30T16:24:21.290 回答