我正在尝试创建一种名为 Mango 的玩具编程语言。我首先希望它编译成 Java 并作为 Java 编译和执行。但我发现这是一种非常缓慢的方法。所以我决定把它编译成Java Byte Code并执行。我已经给出了芒果代码和等效的 java 代码。你能帮我用字节码将我的芒果代码编译成等效的 .class 文件吗?
在 test.mango
println("Hello World!")
等于
public class test
{
public static void main(String[] args){
System.out.println("Hello World!")
}
}
我确实在 test.java 上使用了javap来生成以下字节码
Compiled from "test.java"
public class test extends java.lang.Object{
public test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World!
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
但是当我将它保存为 test.class 并执行它时,我在命令提示符下收到以下错误
java.lang.ClassFormatError: Incompatible magic value number 1131375984
我只学习了两个学期的 Java 编程。我的教授告诉我,您可以使用 Java 字节码在 JVM 之上编写编程语言。所以只有我想尝试一下。我没有编程语言设计的经验。所以任何帮助都会非常有用。我确实通过 Java 规范寻找任何线索,但我什么也得不到。